diff options
Diffstat (limited to 'libnautilus-private/nautilus-directory-async.c')
-rw-r--r-- | libnautilus-private/nautilus-directory-async.c | 93 |
1 files changed, 18 insertions, 75 deletions
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c index 685d9f693..394e09107 100644 --- a/libnautilus-private/nautilus-directory-async.c +++ b/libnautilus-private/nautilus-directory-async.c @@ -34,7 +34,6 @@ #include "nautilus-link.h" #include "nautilus-marshal.h" #include "nautilus-metafile.h" -#include "nautilus-search-uri.h" #include <eel/eel-glib-extensions.h> #include <eel/eel-string.h> #include <gtk/gtkmain.h> @@ -1601,6 +1600,10 @@ nautilus_async_destroying_file (NautilusFile *file) directory->details->link_info_read_state->file = NULL; changed = TRUE; } + if (directory->details->extension_info_file == file) { + directory->details->extension_info_file = NULL; + changed = TRUE; + } /* Let the directory take care of the rest. */ if (changed) { @@ -1941,75 +1944,6 @@ mark_all_files_unconfirmed (NautilusDirectory *directory) } } -#if GNOME2_HAS_MEDUSA - -static gboolean -should_display_file_name (const char *name, - GnomeVFSDirectoryFilterOptions options) -{ - /* Note that the name is URI-encoded, but this should not - * affect the . or the ~. - */ - - if ((options & GNOME_VFS_DIRECTORY_FILTER_NODOTFILES) != 0 - && nautilus_file_name_matches_hidden_pattern (name)) { - return FALSE; - } - - if ((options & GNOME_VFS_DIRECTORY_FILTER_NOBACKUPFILES) != 0 - && nautilus_file_name_matches_backup_pattern (name)) { - return FALSE; - } - - /* Note that we don't bother to check for "." or ".." here, because - * this function is used only for search results, which never include - * those special files. If we later use this function more generally, - * we might have to change this. - */ - return TRUE; -} - -/* Filter search results based on user preferences. This must be done - * differently than filtering other files because the search results - * are encoded: the entire file path is encoded and stored as the file - * name. - */ -static gboolean -filter_search_uri (const GnomeVFSFileInfo *info, gpointer data) -{ - GnomeVFSDirectoryFilterOptions options; - char *real_file_uri, *filename; - gboolean result; - - options = GPOINTER_TO_INT (data); - - real_file_uri = nautilus_get_target_uri_from_search_result_name (info->name); - filename = g_path_get_basename (real_file_uri); - result = should_display_file_name (filename, options); - g_free (real_file_uri); - g_free (filename); - - return result; -} - -static GnomeVFSDirectoryFilter * -get_file_count_filter (NautilusDirectory *directory) -{ - if (nautilus_is_search_uri (directory->details->uri)) { - return gnome_vfs_directory_filter_new_custom - (filter_search_uri, - GNOME_VFS_DIRECTORY_FILTER_NEEDS_NAME, - GINT_TO_POINTER (get_filter_options_for_directory_count ())); - } - - return gnome_vfs_directory_filter_new - (GNOME_VFS_DIRECTORY_FILTER_NONE, - get_filter_options_for_directory_count (), - NULL); -} - -#endif - static void read_dot_hidden_file (NautilusDirectory *directory) { @@ -3219,13 +3153,18 @@ static void extension_info_cancel (NautilusDirectory *directory) { if (directory->details->extension_info_in_progress != NULL) { - nautilus_info_provider_cancel_update - (directory->details->extension_info_provider, - directory->details->extension_info_in_progress); + if (directory->details->extension_info_idle) { + g_source_remove (directory->details->extension_info_idle); + } else { + nautilus_info_provider_cancel_update + (directory->details->extension_info_provider, + directory->details->extension_info_in_progress); + } directory->details->extension_info_in_progress = NULL; directory->details->extension_info_file = NULL; directory->details->extension_info_provider = NULL; + directory->details->extension_info_idle = 0; async_job_end (directory, "extension info"); } @@ -3290,7 +3229,8 @@ info_provider_idle_callback (gpointer user_data) directory->details->extension_info_file = NULL; directory->details->extension_info_provider = NULL; directory->details->extension_info_in_progress = NULL; - + directory->details->extension_info_idle = 0; + finish_info_provider (directory, file, response->provider); } @@ -3311,7 +3251,10 @@ info_provider_callback (NautilusInfoProvider *provider, response->result = result; response->directory = NAUTILUS_DIRECTORY (user_data); - g_idle_add (info_provider_idle_callback, response); + response->directory->details->extension_info_idle = + g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, + info_provider_idle_callback, response, + g_free); } static void |