summaryrefslogtreecommitdiff
path: root/libnautilus-private
diff options
context:
space:
mode:
authorDarin Adler <darin@src.gnome.org>2000-08-17 21:57:13 +0000
committerDarin Adler <darin@src.gnome.org>2000-08-17 21:57:13 +0000
commit56d7a0273d5dc121cbb752e5fe82bdd9a85a4039 (patch)
tree9a43d101f4019e71dd773c46117aeb94aa036094 /libnautilus-private
parent7c94dde4e4e348b0b4fcea4954fe2c2dda4e0542 (diff)
downloadnautilus-56d7a0273d5dc121cbb752e5fe82bdd9a85a4039.tar.gz
Remove extra parameters now that the initial files callback is gone. It
* components/tree/nautilus-tree-model.c: (nautilus_tree_model_monitor_node): * libnautilus-extensions/nautilus-directory-async.c: (nautilus_directory_monitor_add_internal): * libnautilus-extensions/nautilus-directory-background.c: (nautilus_connect_background_to_directory_metadata): * libnautilus-extensions/nautilus-directory-private.h: * libnautilus-extensions/nautilus-directory.c: (nautilus_directory_file_monitor_add), (nautilus_self_check_directory): * libnautilus-extensions/nautilus-directory.h: * libnautilus-extensions/nautilus-file.c: (nautilus_file_monitor_add): * libnautilus-extensions/nautilus-trash-directory.c: (trash_file_monitor_add): * libnautilus-extensions/nautilus-vfs-directory.c: (vfs_file_monitor_add): * src/file-manager/fm-directory-view.c: (finish_loading_uri): * src/file-manager/nautilus-trash-monitor.c: (nautilus_trash_metadata_ready_callback): Remove extra parameters now that the initial files callback is gone. It turns out emitting another files_added signal works just fine. If it wasn't for the search list view, I could also merge the "file_added" and "files_changed" signals easily. Both of these changes would simplify the work on the virtual trash directory. * libnautilus-extensions/nautilus-link.h: * libnautilus-extensions/nautilus-link.c: Get rid of NAUTILUS_LINK constant, which looked like a link type, but was really an unrelated implementation detail. * libnautilus-extensions/nautilus-icon-container.c: (sort_icons), (resort), (lay_down_icons_tblr), (finish_adding_new_icons): Removed the file-manager-specific stuff Gene added for the desktop. I fight the continuing battle to keep NautilusIconContainer a general icon container, and not just for the Nautilus icon view. The drag code is still an exception to this that needs to be fixed some day (for NautilusList too). * src/file-manager/fm-desktop-icon-view.c: (fm_desktop_icon_view_initialize), (get_local_path), (get_sort_category), (desktop_icons_compare_callback): Rewrote sorting code from NautilusIconContainer and moved it here where it belongs.
Diffstat (limited to 'libnautilus-private')
-rw-r--r--libnautilus-private/nautilus-directory-async.c4
-rw-r--r--libnautilus-private/nautilus-directory-background.c13
-rw-r--r--libnautilus-private/nautilus-directory-private.h4
-rw-r--r--libnautilus-private/nautilus-directory.c26
-rw-r--r--libnautilus-private/nautilus-directory.h8
-rw-r--r--libnautilus-private/nautilus-file.c3
-rw-r--r--libnautilus-private/nautilus-icon-container.c139
-rw-r--r--libnautilus-private/nautilus-link.c6
-rw-r--r--libnautilus-private/nautilus-link.h1
-rw-r--r--libnautilus-private/nautilus-trash-directory.c33
-rw-r--r--libnautilus-private/nautilus-vfs-directory.c8
11 files changed, 53 insertions, 192 deletions
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c
index 6f5c6f32a..ca9619f59 100644
--- a/libnautilus-private/nautilus-directory-async.c
+++ b/libnautilus-private/nautilus-directory-async.c
@@ -768,9 +768,7 @@ nautilus_directory_monitor_add_internal (NautilusDirectory *directory,
NautilusFile *file,
gconstpointer client,
GList *file_attributes,
- gboolean monitor_metadata,
- NautilusDirectoryCallback callback,
- gpointer callback_data)
+ gboolean monitor_metadata)
{
Monitor *monitor;
diff --git a/libnautilus-private/nautilus-directory-background.c b/libnautilus-private/nautilus-directory-background.c
index d92bc97b5..0fa7618b0 100644
--- a/libnautilus-private/nautilus-directory-background.c
+++ b/libnautilus-private/nautilus-directory-background.c
@@ -709,13 +709,20 @@ nautilus_connect_background_to_directory_metadata (GtkWidget *widget,
background);
/* arrange to receive directory metadata */
+ /* FIXME: This says we want to monitor the file
+ * metadata, and it has the side effect of monitoring
+ * the file list. We want to monitor the directory
+ * metadata, which would not mean monitoring the file
+ * list. This may require a change to the
+ * NautilusDirectory API.
+ */
nautilus_directory_file_monitor_add (directory,
background,
- NULL, TRUE, FALSE,
- NULL, NULL);
+ NULL, TRUE, FALSE);
/* arrange for notification when the theme changes */
- nautilus_preferences_add_callback (NAUTILUS_PREFERENCES_THEME, nautilus_directory_background_theme_changed, background);
+ nautilus_preferences_add_callback (NAUTILUS_PREFERENCES_THEME,
+ nautilus_directory_background_theme_changed, background);
}
diff --git a/libnautilus-private/nautilus-directory-private.h b/libnautilus-private/nautilus-directory-private.h
index 77ac9bf0d..65d6aca4a 100644
--- a/libnautilus-private/nautilus-directory-private.h
+++ b/libnautilus-private/nautilus-directory-private.h
@@ -116,9 +116,7 @@ void nautilus_directory_monitor_add_internal (NautilusDirecto
NautilusFile *file,
gconstpointer client,
GList *attributes,
- gboolean monitor_metadata,
- NautilusDirectoryCallback callback,
- gpointer callback_data);
+ gboolean monitor_metadata);
void nautilus_directory_monitor_remove_internal (NautilusDirectory *directory,
NautilusFile *file,
gconstpointer client);
diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c
index 153fa8da7..94996af6e 100644
--- a/libnautilus-private/nautilus-directory.c
+++ b/libnautilus-private/nautilus-directory.c
@@ -944,9 +944,7 @@ nautilus_directory_file_monitor_add (NautilusDirectory *directory,
gconstpointer client,
GList *file_attributes,
gboolean monitor_metadata,
- gboolean force_reload,
- NautilusDirectoryCallback callback,
- gpointer callback_data)
+ gboolean force_reload)
{
g_return_if_fail (NAUTILUS_IS_DIRECTORY (directory));
g_return_if_fail (client != NULL);
@@ -955,8 +953,7 @@ nautilus_directory_file_monitor_add (NautilusDirectory *directory,
(NAUTILUS_DIRECTORY_CLASS, directory,
file_monitor_add, (directory, client,
file_attributes, monitor_metadata,
- force_reload,
- callback, callback_data));
+ force_reload));
}
void
@@ -988,21 +985,10 @@ nautilus_directory_is_not_empty (NautilusDirectory *directory)
#include "nautilus-file-attributes.h"
static int data_dummy;
-static guint file_count;
static gboolean got_metadata_flag;
static gboolean got_files_flag;
static void
-get_files_callback (NautilusDirectory *directory, GList *files, gpointer callback_data)
-{
- g_assert (NAUTILUS_IS_DIRECTORY (directory));
- g_assert (files != NULL);
- g_assert (callback_data == &data_dummy);
-
- file_count += g_list_length (files);
-}
-
-static void
got_metadata_callback (NautilusDirectory *directory, GList *files, gpointer callback_data)
{
g_assert (NAUTILUS_IS_DIRECTORY (directory));
@@ -1039,11 +1025,9 @@ nautilus_self_check_directory (void)
NAUTILUS_CHECK_INTEGER_RESULT (g_hash_table_size (directories), 1);
- file_count = 0;
nautilus_directory_file_monitor_add
- (directory, &file_count,
- NULL, FALSE, FALSE,
- get_files_callback, &data_dummy);
+ (directory, &data_dummy,
+ NULL, FALSE, FALSE);
got_metadata_flag = FALSE;
nautilus_directory_call_when_ready (directory, NULL, TRUE,
@@ -1080,7 +1064,7 @@ nautilus_self_check_directory (void)
NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_directory_get ("file:///etc////") == directory, TRUE);
nautilus_directory_unref (directory);
- nautilus_directory_file_monitor_remove (directory, &file_count);
+ nautilus_directory_file_monitor_remove (directory, &data_dummy);
nautilus_directory_unref (directory);
diff --git a/libnautilus-private/nautilus-directory.h b/libnautilus-private/nautilus-directory.h
index 95fb68589..03c2dabd7 100644
--- a/libnautilus-private/nautilus-directory.h
+++ b/libnautilus-private/nautilus-directory.h
@@ -122,9 +122,7 @@ typedef struct
gconstpointer client,
GList *monitor_attributes,
gboolean monitor_metadata,
- gboolean force_reload,
- NautilusDirectoryCallback initial_files_callback,
- gpointer callback_data);
+ gboolean force_reload);
void (* file_monitor_remove) (NautilusDirectory *directory,
gconstpointer client);
gboolean (* are_all_files_seen) (NautilusDirectory *directory);
@@ -206,9 +204,7 @@ void nautilus_directory_file_monitor_add (NautilusDirectory
gconstpointer client,
GList *monitor_attributes,
gboolean monitor_metadata,
- gboolean force_reload,
- NautilusDirectoryCallback initial_files_callback,
- gpointer callback_data);
+ gboolean force_reload);
void nautilus_directory_file_monitor_remove (NautilusDirectory *directory,
gconstpointer client);
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index fd20a77a8..e040ab39f 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -1551,8 +1551,7 @@ nautilus_file_monitor_add (NautilusFile *file,
nautilus_directory_monitor_add_internal
(file->details->directory, file,
client,
- attributes, monitor_metadata,
- NULL, NULL);
+ attributes, monitor_metadata);
}
void
diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c
index 840734de3..6bae28f10 100644
--- a/libnautilus-private/nautilus-icon-container.c
+++ b/libnautilus-private/nautilus-icon-container.c
@@ -26,20 +26,7 @@
#include <config.h>
#include "nautilus-icon-container.h"
-#include <ctype.h>
-#include <math.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <libgnomevfs/gnome-vfs-uri.h>
-#include <gdk/gdkkeysyms.h>
-#include <gdk-pixbuf/gnome-canvas-pixbuf.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkmain.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-
#include "nautilus-background.h"
-#include "nautilus-file.h"
#include "nautilus-font-factory.h"
#include "nautilus-gdk-pixbuf-extensions.h"
#include "nautilus-glib-extensions.h"
@@ -47,11 +34,19 @@
#include "nautilus-gnome-extensions.h"
#include "nautilus-gtk-extensions.h"
#include "nautilus-gtk-macros.h"
+#include "nautilus-icon-private.h"
#include "nautilus-icon-text-item.h"
#include "nautilus-lib-self-check-functions.h"
-#include "nautilus-link.h"
#include "nautilus-theme.h"
-#include "nautilus-icon-private.h"
+#include <ctype.h>
+#include <gdk-pixbuf/gnome-canvas-pixbuf.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtksignal.h>
+#include <libgnomeui/gnome-canvas-rect-ellipse.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
/* Interval for updating the rubberband selection, in milliseconds. */
#define RUBBERBAND_TIMEOUT_INTERVAL 10
@@ -129,7 +124,9 @@ static void icon_get_bounding_box (NautilusIcon *icon,
int *x2_return,
int *y2_return);
-NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusIconContainer, nautilus_icon_container, GNOME_TYPE_CANVAS)
+NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusIconContainer,
+ nautilus_icon_container,
+ GNOME_TYPE_CANVAS)
/* The NautilusIconContainer signals. */
enum {
@@ -542,11 +539,18 @@ compare_icons (gconstpointer a, gconstpointer b)
}
static void
-resort (NautilusIconContainer *container)
+sort_icons (NautilusIconContainer *container,
+ GList **icons)
{
sort_hack_container = container;
- container->details->icons = g_list_sort
- (container->details->icons, compare_icons);
+ *icons = g_list_sort
+ (*icons, compare_icons);
+}
+
+static void
+resort (NautilusIconContainer *container)
+{
+ sort_icons (container, &container->details->icons);
}
/* Given an icon's bounds, compute the width of the space it should be
@@ -669,95 +673,6 @@ lay_down_icons_horizontal (NautilusIconContainer *container,
}
}
-static int
-desktop_icons_sort (gconstpointer a, gconstpointer b)
-{
- const NautilusIcon *icon_a, *icon_b;
- char *uri_a, *uri_b;
- const char *path_a, *path_b;
- GnomeVFSURI *vfs_uri_a, *vfs_uri_b;
- NautilusFile *file_a, *file_b;
- char *link_type;
-
- icon_a = a;
- icon_b = b;
-
- uri_a = nautilus_icon_container_get_icon_uri (sort_hack_container, (NautilusIcon *)icon_a);
- uri_b = nautilus_icon_container_get_icon_uri (sort_hack_container, (NautilusIcon *)icon_b);
- if (uri_a == NULL || uri_b == NULL) {
- return 0;
- }
-
- file_a = nautilus_file_get (uri_a);
- g_assert (file_a);
- file_b = nautilus_file_get (uri_b);
- g_assert (file_b);
-
- /* Non link files go in the middle */
- if (!nautilus_file_is_nautilus_link (file_a)) {
- nautilus_file_unref (file_a);
- nautilus_file_unref (file_b);
- g_free (uri_a);
- g_free (uri_b);
- return 0;
- }
-
- if (!nautilus_file_is_nautilus_link (file_b)) {
- nautilus_file_unref (file_a);
- nautilus_file_unref (file_b);
- g_free (uri_a);
- g_free (uri_b);
- return 0;
- }
-
- /* Get uris */
- vfs_uri_a = gnome_vfs_uri_new (uri_a);
- g_assert (vfs_uri_a);
- vfs_uri_b = gnome_vfs_uri_new (uri_b);
- g_assert (vfs_uri_b);
-
- /* Get paths */
- path_a = gnome_vfs_uri_get_path (vfs_uri_a);
- g_assert (path_a);
- path_b = gnome_vfs_uri_get_path (vfs_uri_b);
- g_assert (path_b);
-
- /* Done with NautilusFiles and uris */
- nautilus_file_unref (file_a);
- nautilus_file_unref (file_b);
- g_free (uri_a);
- g_free (uri_b);
-
- /* Home directory goes first */
- link_type = nautilus_link_get_link_type (path_a);
- if (link_type) {
- if (strcmp (link_type, NAUTILUS_LINK_HOME) == 0) {
- gnome_vfs_uri_unref (vfs_uri_a);
- gnome_vfs_uri_unref (vfs_uri_b);
- g_free (link_type);
- return -1;
- }
- g_free (link_type);
- }
-
- link_type = nautilus_link_get_link_type (path_b);
- if (link_type) {
- if (strcmp (link_type, NAUTILUS_LINK_HOME) == 0) {
- gnome_vfs_uri_unref (vfs_uri_a);
- gnome_vfs_uri_unref (vfs_uri_b);
- g_free (link_type);
- return 1;
- }
- g_free (link_type);
- }
-
- /* If we get here, we don't care */
- gnome_vfs_uri_unref (vfs_uri_a);
- gnome_vfs_uri_unref (vfs_uri_b);
-
- return 0;
-}
-
/* Search for available space at location */
static gboolean
find_open_grid_space (NautilusIcon *icon, int **icon_grid, int num_rows,
@@ -905,10 +820,6 @@ lay_down_icons_tblr (NautilusIconContainer *container, GList *icons)
int num_rows, num_columns;
int row, column;
- /* Sort the icons according to our desktop rules */
- sort_hack_container = container;
- icons = g_list_sort (icons, desktop_icons_sort);
-
/* Get container dimensions */
width = GTK_WIDGET (container)->allocation.width;
height = GTK_WIDGET (container)->allocation.height;
@@ -920,7 +831,7 @@ lay_down_icons_tblr (NautilusIconContainer *container, GList *icons)
total = g_list_length (container->details->icons);
new_length = g_list_length (icons);
placed = total - new_length;
- if (placed > 0) {
+ if (placed > 0) {
/* Add only placed icons in list */
for (p = container->details->icons; p != NULL; p = p->next) {
icon = p->data;
@@ -3373,7 +3284,7 @@ finish_adding_new_icons (NautilusIconContainer *container)
if (no_position_icons != NULL) {
g_assert (!container->details->auto_layout);
- no_position_icons = g_list_reverse (no_position_icons);
+ sort_icons (container, &no_position_icons);
get_all_icon_bounds (container, NULL, NULL, NULL, &bottom);
lay_down_icons (container, no_position_icons, bottom + ICON_PAD_BOTTOM);
g_list_free (no_position_icons);
diff --git a/libnautilus-private/nautilus-link.c b/libnautilus-private/nautilus-link.c
index a596cf28f..c16f656f5 100644
--- a/libnautilus-private/nautilus-link.c
+++ b/libnautilus-private/nautilus-link.c
@@ -70,7 +70,7 @@ nautilus_link_create (const char *directory_path,
/* Add mime magic string so that the mime sniffer can recognize us.
* Note: The value of the tag identfies what type of link this. */
- xmlSetProp (root_node, NAUTILUS_LINK, NAUTILUS_LINK_GENERIC);
+ xmlSetProp (root_node, "NAUTILUS_LINK", NAUTILUS_LINK_GENERIC);
/* Add link and custom icon tags */
xmlSetProp (root_node, "CUSTOM_ICON", image);
@@ -146,7 +146,7 @@ nautilus_link_set_type (const char *path, const char *type)
}
xmlSetProp (xmlDocGetRootElement (document),
- NAUTILUS_LINK,
+ "NAUTILUS_LINK",
type);
xmlSaveFile (path, document);
xmlFreeDoc (document);
@@ -350,7 +350,7 @@ nautilus_link_get_link_type (const char *path)
{
/* FIXME: This interface requires sync. I/O. */
return nautilus_link_get_root_property
- (path, NAUTILUS_LINK);
+ (path, "NAUTILUS_LINK");
}
/* FIXME: Caller has to know to pass in a file with a NUL character at
diff --git a/libnautilus-private/nautilus-link.h b/libnautilus-private/nautilus-link.h
index e4f5ef61b..0d9bf0a37 100644
--- a/libnautilus-private/nautilus-link.h
+++ b/libnautilus-private/nautilus-link.h
@@ -29,7 +29,6 @@
#include "nautilus-file.h"
/* Link types */
-#define NAUTILUS_LINK "NAUTILUS_LINK"
#define NAUTILUS_LINK_GENERIC "Generic Link"
#define NAUTILUS_LINK_TRASH "Trash Link"
#define NAUTILUS_LINK_MOUNT "Mount Link"
diff --git a/libnautilus-private/nautilus-trash-directory.c b/libnautilus-private/nautilus-trash-directory.c
index 47ce7b412..ffa04cece 100644
--- a/libnautilus-private/nautilus-trash-directory.c
+++ b/libnautilus-private/nautilus-trash-directory.c
@@ -289,35 +289,17 @@ trash_cancel_callback (NautilusDirectory *directory,
trash_callback_destroy (trash_callback);
}
-/* Add the files that are passed to make one large list. */
-static void
-trash_files_callback (NautilusDirectory *directory,
- GList *files,
- gpointer callback_data)
-{
- GList **merged_file_list;
-
- g_assert (NAUTILUS_IS_DIRECTORY (directory));
- g_assert (callback_data != NULL);
-
- merged_file_list = callback_data;
- *merged_file_list = g_list_concat
- (*merged_file_list, nautilus_file_list_copy (files));
-}
-
/* Create a monitor on each of the directories in the list. */
static void
trash_file_monitor_add (NautilusDirectory *directory,
gconstpointer client,
GList *file_attributes,
gboolean monitor_metadata,
- gboolean force_reload,
- NautilusDirectoryCallback callback,
- gpointer callback_data)
+ gboolean force_reload)
{
NautilusTrashDirectory *trash;
gpointer unique_client;
- GList *p, *merged_file_list;
+ GList *p;
trash = NAUTILUS_TRASH_DIRECTORY (directory);
@@ -333,20 +315,11 @@ trash_file_monitor_add (NautilusDirectory *directory,
}
/* Call through to the real directory add calls. */
- merged_file_list = NULL;
for (p = trash->details->directories; p != NULL; p = p->next) {
nautilus_directory_file_monitor_add
(p->data, unique_client,
- file_attributes, monitor_metadata, force_reload,
- callback == NULL ? NULL : trash_files_callback,
- &merged_file_list);
- }
-
- /* Now do the callback, with the total list. */
- if (callback != NULL) {
- (* callback) (directory, merged_file_list, callback_data);
+ file_attributes, monitor_metadata, force_reload);
}
- nautilus_file_list_free (merged_file_list);
}
/* Remove the monitor from each of the directories in the list. */
diff --git a/libnautilus-private/nautilus-vfs-directory.c b/libnautilus-private/nautilus-vfs-directory.c
index fe434c352..e698ef339 100644
--- a/libnautilus-private/nautilus-vfs-directory.c
+++ b/libnautilus-private/nautilus-vfs-directory.c
@@ -106,9 +106,7 @@ vfs_file_monitor_add (NautilusDirectory *directory,
gconstpointer client,
GList *file_attributes,
gboolean monitor_metadata,
- gboolean force_reload,
- NautilusDirectoryCallback callback,
- gpointer callback_data)
+ gboolean force_reload)
{
g_assert (NAUTILUS_IS_VFS_DIRECTORY (directory));
g_assert (client != NULL);
@@ -120,9 +118,7 @@ vfs_file_monitor_add (NautilusDirectory *directory,
nautilus_directory_monitor_add_internal
(directory, NULL,
client,
- file_attributes, monitor_metadata,
- force_reload ? NULL : callback,
- callback_data);
+ file_attributes, monitor_metadata);
}
static void