summaryrefslogtreecommitdiff
path: root/libnautilus-private/nautilus-directory-async.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnautilus-private/nautilus-directory-async.c')
-rw-r--r--libnautilus-private/nautilus-directory-async.c93
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