diff options
author | Darin Adler <darin@src.gnome.org> | 2000-08-17 21:57:13 +0000 |
---|---|---|
committer | Darin Adler <darin@src.gnome.org> | 2000-08-17 21:57:13 +0000 |
commit | 56d7a0273d5dc121cbb752e5fe82bdd9a85a4039 (patch) | |
tree | 9a43d101f4019e71dd773c46117aeb94aa036094 /libnautilus-private | |
parent | 7c94dde4e4e348b0b4fcea4954fe2c2dda4e0542 (diff) | |
download | nautilus-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.c | 4 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory-background.c | 13 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory-private.h | 4 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.c | 26 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.h | 8 | ||||
-rw-r--r-- | libnautilus-private/nautilus-file.c | 3 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-container.c | 139 | ||||
-rw-r--r-- | libnautilus-private/nautilus-link.c | 6 | ||||
-rw-r--r-- | libnautilus-private/nautilus-link.h | 1 | ||||
-rw-r--r-- | libnautilus-private/nautilus-trash-directory.c | 33 | ||||
-rw-r--r-- | libnautilus-private/nautilus-vfs-directory.c | 8 |
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 |