diff options
author | Darin Adler <darin@src.gnome.org> | 2000-10-24 20:24:35 +0000 |
---|---|---|
committer | Darin Adler <darin@src.gnome.org> | 2000-10-24 20:24:35 +0000 |
commit | 83cb6f4c4bd388dc4087acfe4ac757dd5a408fe6 (patch) | |
tree | 17426e93c486cd4839fe8a5ebd7ab8b0d0b1b8a1 /src/nautilus-applicable-views.c | |
parent | a86b53488ef8a199047e93f2661587f7a045b558 (diff) | |
download | nautilus-83cb6f4c4bd388dc4087acfe4ac757dd5a408fe6.tar.gz |
Some work towards reducing load_directory calls.
Also fixed bug 3978 (Many Bonobo warnings/errors on quit).
* libnautilus-extensions/nautilus-directory-async.c:
(set_up_request_by_file_attributes),
(update_file_info_in_list_if_needed),
(dequeue_pending_idle_callback), (request_is_satisfied),
(get_info_callback), (file_info_start):
* libnautilus-extensions/nautilus-directory-private.h:
* libnautilus-extensions/nautilus-file-attributes.h:
* libnautilus-extensions/nautilus-file-private.h:
* libnautilus-extensions/nautilus-file.c:
(nautilus_file_new_from_info), (destroy),
(nautilus_file_update_info), (nautilus_file_update_name),
(nautilus_file_compare_by_type),
(nautilus_file_get_string_attribute), (get_description),
(update_description_for_link), (nautilus_file_get_type_as_string),
(nautilus_file_get_mime_type), (nautilus_file_is_mime_type),
(nautilus_file_check_if_ready):
* libnautilus-extensions/nautilus-file.h:
* libnautilus-extensions/nautilus-mime-actions.c:
(nautilus_mime_actions_get_required_file_attributes),
(nautilus_mime_get_default_action_type_for_file),
(nautilus_mime_get_default_application_for_file_internal),
(nautilus_mime_get_default_component_for_file_internal),
(nautilus_mime_get_short_list_applications_for_file),
(nautilus_mime_get_short_list_components_for_file),
(nautilus_mime_get_short_list_methods_for_file),
(nautilus_mime_get_all_applications_for_file),
(nautilus_mime_get_all_components_for_file),
(nautilus_mime_set_short_list_applications_for_file),
(nautilus_mime_set_short_list_components_for_file):
Get rid of the distinction between slow and default MIME type once
again. We (Pavel, Maciej, John, and I) decided it's better not to
have multiple opinions on the MIME type, despite our original idea
that we needed the slow MIME type for some things, even on remote
file systems.
* libnautilus-extensions/nautilus-glib-extensions.h:
Fixed the formatting in this file.
* src/file-manager/fm-directory-view.c: (load_location_callback):
Only force a reload if we are reloading the same directory. This
is needed to take advantage of the loading already done for us by
the framework.
(load_directory): Take a NautilusDirectory instead of a URI string.
Also take a boolean parameter to control if we force a reload.
(finish_loading_uri): Respect the boolean parameter that tells us
whether to force a reload.
(filtering_changed_callback): Use the new load_directory.
* src/nautilus-applicable-views.c: (nautilus_navigation_info_new),
(nautilus_navigation_info_cancel), (nautilus_navigation_info_free):
Monitor the directory while we are loading the component. We
already need to load the directory to get the MIME types, so this
does no additional harm, and it prepares us to consolidate the
loading done for different reasons.
* src/nautilus-main.c: (main): Use nautilus_setenv instead of
putenv, since it's more portable.
* src/nautilus-window-manage-views.c: Quick simplification pass on
state machine. Got rid of the use of varargs and renamed a bunch
of things.
* src/nautilus-window-manage-views.h:
* src/nautilus-window-private.h:
Moved external functions from nautilus-window-manage-views.c to
all be in nautilus-window-manager-views.h. This is one step in
reducing the number of clients that need access to private stuff
in NautilusWindow.
* src/nautilus-window-service-ui.c: (detach_service_ui),
(nautilus_window_install_service_ui): Detach the service UI on
"destroy" rather that using set_data_full, because finalize time
is too late.
* src/nautilus-view-frame.c: (nautilus_view_frame_destroy):
Got rid of extra unref that was messing things up here.
Diffstat (limited to 'src/nautilus-applicable-views.c')
-rw-r--r-- | src/nautilus-applicable-views.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/nautilus-applicable-views.c b/src/nautilus-applicable-views.c index fb1606fc0..1dd49e557 100644 --- a/src/nautilus-applicable-views.c +++ b/src/nautilus-applicable-views.c @@ -55,6 +55,7 @@ struct NautilusNavigationInfo { NautilusNavigationCallback callback; gpointer callback_data; NautilusFile *file; + NautilusDirectory *directory; NautilusViewIdentifier *initial_content_id; GnomeVFSAsyncHandle *handle; }; @@ -184,15 +185,21 @@ nautilus_navigation_info_new (const char *location, info->callback_data = notify_data; info->file = nautilus_file_get (location); - + info->directory = nautilus_directory_get (location); + + /* We start monitoring files here so we get a single load of + * the directory instead of multiple ones. The concept is that + * our load of the directory is shared both with the + * call_when_ready below and with other stuff needed by + * components. + */ + nautilus_directory_file_monitor_add (info->directory, info, + NULL, FALSE); + /* Arrange for all the file attributes we will need. */ attributes = nautilus_mime_actions_get_required_file_attributes (); - - nautilus_file_call_when_ready - (info->file, - attributes, - got_file_info_callback, info); - + nautilus_file_call_when_ready (info->file, attributes, + got_file_info_callback, info); g_list_free (attributes); return info; @@ -209,9 +216,10 @@ nautilus_navigation_info_cancel (NautilusNavigationInfo *info) } nautilus_file_cancel_call_when_ready - (info->file, - got_file_info_callback, - info); + (info->file, got_file_info_callback, info); + + nautilus_directory_file_monitor_remove + (info->directory, info); } void @@ -222,6 +230,7 @@ nautilus_navigation_info_free (NautilusNavigationInfo *info) nautilus_navigation_info_cancel (info); nautilus_file_unref (info->file); + nautilus_directory_unref (info->directory); nautilus_view_identifier_free (info->initial_content_id); g_free (info); |