From 190ad63f928cab2a1e47c5f5be98454fe5570ed6 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 14 Jan 2004 16:19:25 +0000 Subject: Add slow_mime_type file attribute. Allow call_when_ready to take a NULL 2004-01-14 Alexander Larsson * libnautilus-private/nautilus-directory-async.c: * libnautilus-private/nautilus-directory-private.h: * libnautilus-private/nautilus-file-attributes.h: * libnautilus-private/nautilus-file-private.h: * libnautilus-private/nautilus-file.c: * libnautilus-private/nautilus-file.h: Add slow_mime_type file attribute. Allow call_when_ready to take a NULL callback, and allow these monitors to be duplicated. (Used for fire-and-forget attribute reading) * libnautilus-private/nautilus-mime-actions.c: (nautilus_mime_actions_get_minimum_file_attributes): Add slow mime type here * src/file-manager/fm-directory-view.c: Get slow mime type on selection * src/file-manager/fm-properties-window.c: Get slow mime type for properties dialog. Don't use the same pointer twice for the same monitor. --- libnautilus-private/nautilus-directory-async.c | 88 +++++++++++++++++++----- libnautilus-private/nautilus-directory-private.h | 5 ++ libnautilus-private/nautilus-file-attributes.h | 1 + libnautilus-private/nautilus-file-private.h | 5 +- libnautilus-private/nautilus-file.c | 81 ++++++++++++++++------ libnautilus-private/nautilus-file.h | 1 + libnautilus-private/nautilus-mime-actions.c | 3 +- 7 files changed, 145 insertions(+), 39 deletions(-) (limited to 'libnautilus-private') diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c index ab6394dd7..4cc129d21 100644 --- a/libnautilus-private/nautilus-directory-async.c +++ b/libnautilus-private/nautilus-directory-async.c @@ -541,6 +541,7 @@ nautilus_directory_set_up_request (Request *request, NAUTILUS_FILE_ATTRIBUTE_DIRECTORY_ITEM_MIME_TYPES) != FALSE; request->file_info = (file_attributes & (NAUTILUS_FILE_ATTRIBUTE_MIME_TYPE | + NAUTILUS_FILE_ATTRIBUTE_SLOW_MIME_TYPE | NAUTILUS_FILE_ATTRIBUTE_IS_DIRECTORY | NAUTILUS_FILE_ATTRIBUTE_CAPABILITIES | NAUTILUS_FILE_ATTRIBUTE_FILE_TYPE)) != FALSE; @@ -583,7 +584,9 @@ nautilus_directory_set_up_request (Request *request, request->metafile |= (file_attributes & NAUTILUS_FILE_ATTRIBUTE_METADATA) != FALSE; - + + request->slow_mime_type = (file_attributes & NAUTILUS_FILE_ATTRIBUTE_SLOW_MIME_TYPE) != FALSE; + request->extension_info = (file_attributes & NAUTILUS_FILE_ATTRIBUTE_EXTENSION_INFO) != FALSE; } @@ -602,6 +605,7 @@ mime_db_changed_callback (GnomeVFSMIMEMonitor *ignore, NautilusDirectory *dir) NAUTILUS_FILE_ATTRIBUTE_CAPABILITIES | NAUTILUS_FILE_ATTRIBUTE_CUSTOM_ICON | NAUTILUS_FILE_ATTRIBUTE_MIME_TYPE | + NAUTILUS_FILE_ATTRIBUTE_SLOW_MIME_TYPE | NAUTILUS_FILE_ATTRIBUTE_METADATA | NAUTILUS_FILE_ATTRIBUTE_FILE_TYPE | NAUTILUS_FILE_ATTRIBUTE_DIRECTORY_ITEM_MIME_TYPES; @@ -894,7 +898,7 @@ dequeue_pending_idle_callback (gpointer callback_data) if (file != NULL) { /* file already exists, check if it changed */ set_file_unconfirmed (file, FALSE); - if (nautilus_file_update_info (file, file_info)) { + if (nautilus_file_update_info (file, file_info, FALSE)) { /* File changed, notify about the change. */ nautilus_file_ref (file); changed_files = g_list_prepend (changed_files, file); @@ -1277,9 +1281,11 @@ ready_callback_call (NautilusDirectory *directory, /* Call the callback. */ if (callback->file != NULL) { - (* callback->callback.file) (callback->file, - callback->callback_data); - } else { + if (callback->callback.file) { + (* callback->callback.file) (callback->file, + callback->callback_data); + } + } else if (callback->callback.directory != NULL) { if (directory == NULL || !callback->request.file_list) { file_list = NULL; } else { @@ -1309,7 +1315,6 @@ nautilus_directory_call_when_ready_internal (NautilusDirectory *directory, g_assert (directory == NULL || NAUTILUS_IS_DIRECTORY (directory)); g_assert (file == NULL || NAUTILUS_IS_FILE (file)); g_assert (file != NULL || directory_callback != NULL); - g_assert (file == NULL || file_callback != NULL); /* Construct a callback object. */ callback.file = file; @@ -1321,7 +1326,7 @@ nautilus_directory_call_when_ready_internal (NautilusDirectory *directory, callback.callback_data = callback_data; nautilus_directory_set_up_request (&callback.request, file_attributes); callback.request.file_list = wait_for_file_list; - + /* Handle the NULL case. */ if (directory == NULL) { ready_callback_call (NULL, &callback); @@ -1332,7 +1337,10 @@ nautilus_directory_call_when_ready_internal (NautilusDirectory *directory, if (g_list_find_custom (directory->details->call_when_ready_list, &callback, ready_callback_key_compare) != NULL) { - g_warning ("tried to add a new callback while an old one was pending"); + if (file_callback != NULL && directory_callback != NULL) { + g_warning ("tried to add a new callback while an old one was pending"); + } + /* NULL callback means, just read it. Conflicts are ok. */ return; } @@ -1669,6 +1677,26 @@ wants_info (const Request *request) return request->file_info; } +static gboolean +always_lacks (NautilusFile *file) +{ + return TRUE; +} + +static gboolean +lacks_slow_mime_type (NautilusFile *file) +{ + return !file->details->got_slow_mime_type + && !file->details->is_gone; +} + +static gboolean +wants_slow_mime_type (const Request *request) +{ + return request->slow_mime_type; +} + + static gboolean lacks_deep_count (NautilusFile *file) { @@ -1818,6 +1846,12 @@ request_is_satisfied (NautilusDirectory *directory, } } + if (request->slow_mime_type) { + if (has_problem (directory, file, lacks_slow_mime_type)) { + return FALSE; + } + } + if (request->top_left_text) { if (has_problem (directory, file, lacks_top_left)) { return FALSE; @@ -2097,7 +2131,7 @@ start_monitoring_file_list (NautilusDirectory *directory) #ifdef DEBUG_LOAD_DIRECTORY g_message ("load_directory called to monitor file list of %s", directory->details->uri); -#endif +#endif gnome_vfs_async_load_directory (&directory->details->directory_load_in_progress, /* handle */ directory->details->uri, /* uri */ @@ -2791,6 +2825,7 @@ get_info_callback (GnomeVFSAsyncHandle *handle, NautilusDirectory *directory; NautilusFile *get_info_file; GnomeVFSGetFileInfoResult *result; + gboolean has_slow_mime_type; directory = NAUTILUS_DIRECTORY (callback_data); g_assert (handle == NULL || handle == directory->details->get_info_in_progress); @@ -2799,10 +2834,13 @@ get_info_callback (GnomeVFSAsyncHandle *handle, g_assert (NAUTILUS_IS_FILE (get_info_file)); nautilus_directory_ref (directory); + + has_slow_mime_type = directory->details->get_info_has_slow_mime_type; directory->details->get_info_file = NULL; directory->details->get_info_in_progress = NULL; - + directory->details->get_info_has_slow_mime_type = FALSE; + /* ref here because we might be removing the last ref when we * mark the file gone below, but we need to keep a ref at * least long enough to send the change notification. @@ -2828,7 +2866,7 @@ get_info_callback (GnomeVFSAsyncHandle *handle, } } } else { - nautilus_file_update_info (get_info_file, result->file_info); + nautilus_file_update_info (get_info_file, result->file_info, has_slow_mime_type); } nautilus_file_changed (get_info_file); @@ -2850,7 +2888,8 @@ file_info_stop (NautilusDirectory *directory) if (file != NULL) { g_assert (NAUTILUS_IS_FILE (file)); g_assert (file->details->directory == directory); - if (is_needy (file, lacks_info, wants_info)) { + if (is_needy (file, lacks_info, wants_info) || + is_needy (file, lacks_slow_mime_type, wants_slow_mime_type)) { return; } } @@ -2867,16 +2906,20 @@ file_info_start (NautilusDirectory *directory, char *uri; GnomeVFSURI *vfs_uri; GList fake_list; - + gboolean need_slow_mime; + GnomeVFSFileInfoOptions options; + file_info_stop (directory); if (directory->details->get_info_in_progress != NULL) { return; } - if (!is_needy (file, lacks_info, wants_info)) { + if (!is_needy (file, lacks_info, wants_info) && + !is_needy (file, lacks_slow_mime_type, wants_slow_mime_type)) { return; } + need_slow_mime = is_needy (file, always_lacks, wants_slow_mime_type); uri = nautilus_file_get_uri (file); vfs_uri = gnome_vfs_uri_new (uri); @@ -2889,6 +2932,7 @@ file_info_start (NautilusDirectory *directory, file->details->file_info_is_up_to_date = TRUE; file->details->get_info_failed = TRUE; file->details->get_info_error = GNOME_VFS_ERROR_INVALID_URI; + file->details->got_slow_mime_type = need_slow_mime; nautilus_directory_async_state_changed (directory); return; @@ -2902,18 +2946,23 @@ file_info_start (NautilusDirectory *directory, fake_list.data = vfs_uri; fake_list.prev = NULL; fake_list.next = NULL; + + options = GNOME_VFS_FILE_INFO_GET_MIME_TYPE + | GNOME_VFS_FILE_INFO_FOLLOW_LINKS; + if (need_slow_mime) { + options |= GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE; + } + directory->details->get_info_has_slow_mime_type = need_slow_mime; gnome_vfs_async_get_file_info (&directory->details->get_info_in_progress, &fake_list, - GNOME_VFS_FILE_INFO_GET_MIME_TYPE - | GNOME_VFS_FILE_INFO_FOLLOW_LINKS, + options, GNOME_VFS_PRIORITY_DEFAULT, get_info_callback, directory); gnome_vfs_uri_unref (vfs_uri); } - static void link_info_done (NautilusDirectory *directory, NautilusFile *file, @@ -3344,6 +3393,7 @@ start_or_stop_io (NautilusDirectory *directory) if (file_needs_low_priority_work_done (directory, file)) { /* Start getting attributes if possible */ + file_info_start (directory, file); /* for slow mime type */ directory_count_start (directory, file); deep_count_start (directory, file); mime_list_start (directory, file); @@ -3591,6 +3641,10 @@ file_needs_low_priority_work_done (NautilusDirectory *directory, return TRUE; } + if (is_needy (file, lacks_slow_mime_type, wants_slow_mime_type)) { + return TRUE; + } + if (is_needy (file, lacks_top_left, wants_top_left)) { return TRUE; } diff --git a/libnautilus-private/nautilus-directory-private.h b/libnautilus-private/nautilus-directory-private.h index 9dc3bae98..d60554ea1 100644 --- a/libnautilus-private/nautilus-directory-private.h +++ b/libnautilus-private/nautilus-directory-private.h @@ -101,6 +101,10 @@ struct NautilusDirectoryDetails NautilusFile *get_info_file; GnomeVFSAsyncHandle *get_info_in_progress; + gboolean get_info_has_slow_mime_type; + + NautilusFile *slow_mime_type_file; + GnomeVFSAsyncHandle *slow_mime_type_in_progress; NautilusFile *extension_info_file; NautilusInfoProvider *extension_info_provider; @@ -126,6 +130,7 @@ typedef struct { gboolean mime_list; gboolean top_left_text; gboolean extension_info; + gboolean slow_mime_type; } Request; NautilusDirectory *nautilus_directory_get_existing (const char *uri); diff --git a/libnautilus-private/nautilus-file-attributes.h b/libnautilus-private/nautilus-file-attributes.h index ba02bd426..c9fed0742 100644 --- a/libnautilus-private/nautilus-file-attributes.h +++ b/libnautilus-private/nautilus-file-attributes.h @@ -44,6 +44,7 @@ typedef enum { NAUTILUS_FILE_ATTRIBUTE_DISPLAY_NAME = 1 << 11, NAUTILUS_FILE_ATTRIBUTE_VOLUMES = 1 << 12, NAUTILUS_FILE_ATTRIBUTE_EXTENSION_INFO = 1 << 13, + NAUTILUS_FILE_ATTRIBUTE_SLOW_MIME_TYPE = 1 << 14, } NautilusFileAttributes; #endif /* NAUTILUS_FILE_ATTRIBUTES_H */ diff --git a/libnautilus-private/nautilus-file-private.h b/libnautilus-private/nautilus-file-private.h index 9f3b1da37..f37ad0c0f 100644 --- a/libnautilus-private/nautilus-file-private.h +++ b/libnautilus-private/nautilus-file-private.h @@ -117,6 +117,8 @@ struct NautilusFileDetails /* got_info known from info field being non-NULL */ eel_boolean_bit get_info_failed : 1; eel_boolean_bit file_info_is_up_to_date : 1; + + eel_boolean_bit got_slow_mime_type : 1; eel_boolean_bit got_directory_count : 1; eel_boolean_bit directory_count_failed : 1; @@ -168,7 +170,8 @@ void nautilus_file_clear_cached_display_name (NautilusFile * no change, update file and return TRUE if the file info contains * new state. */ gboolean nautilus_file_update_info (NautilusFile *file, - GnomeVFSFileInfo *info); + GnomeVFSFileInfo *info, + gboolean info_has_slow_mime); gboolean nautilus_file_update_name (NautilusFile *file, const char *name); diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c index 7c5850a45..694e988fa 100644 --- a/libnautilus-private/nautilus-file.c +++ b/libnautilus-private/nautilus-file.c @@ -100,6 +100,7 @@ typedef struct { NautilusFileOperationCallback callback; gpointer callback_data; gboolean is_rename; + gboolean use_slow_mime; } Operation; typedef GList * (* ModifyListFunction) (GList *list, NautilusFile *file); @@ -123,7 +124,8 @@ static char * nautilus_file_get_owner_as_string (NautilusFile gboolean include_real_name); static char * nautilus_file_get_type_as_string (NautilusFile *file); static gboolean update_info_and_name (NautilusFile *file, - GnomeVFSFileInfo *info); + GnomeVFSFileInfo *info, + gboolean info_has_slow_mime); static char * nautilus_file_get_display_name_nocopy (NautilusFile *file); static char * nautilus_file_get_display_name_collation_key (NautilusFile *file); @@ -310,7 +312,7 @@ nautilus_file_new_from_info (NautilusDirectory *directory, nautilus_directory_ref (directory); file->details->directory = directory; - update_info_and_name (file, info); + update_info_and_name (file, info, FALSE); return file; } @@ -1059,7 +1061,7 @@ rename_callback (GnomeVFSAsyncHandle *handle, old_uri = nautilus_file_get_uri (op->file); old_relative_uri = g_strdup (op->file->details->relative_uri); - update_info_and_name (op->file, new_info); + update_info_and_name (op->file, new_info, op->use_slow_mime); /* Self-owned files store their metadata under the * hard-code name "." so there's no need to rename @@ -1114,7 +1116,8 @@ rename_guts (NautilusFile *file, char *uri, *old_name; gboolean success; gboolean is_local_desktop_file; - + GnomeVFSFileInfoOptions options; + g_return_if_fail (NAUTILUS_IS_FILE (file)); g_return_if_fail (new_name != NULL); g_return_if_fail (callback != NULL); @@ -1221,6 +1224,13 @@ rename_guts (NautilusFile *file, /* Set up a renaming operation. */ op = operation_new (file, callback, callback_data); op->is_rename = TRUE; + op->use_slow_mime = file->details->got_slow_mime_type; + + options = GNOME_VFS_FILE_INFO_GET_MIME_TYPE + | GNOME_VFS_FILE_INFO_FOLLOW_LINKS; + if (op->use_slow_mime) { + options |= GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE; + } /* Do the renaming. */ partial_file_info = gnome_vfs_file_info_new (); @@ -1229,8 +1239,7 @@ rename_guts (NautilusFile *file, gnome_vfs_async_set_file_info (&op->handle, vfs_uri, partial_file_info, GNOME_VFS_SET_FILE_INFO_NAME, - (GNOME_VFS_FILE_INFO_GET_MIME_TYPE - | GNOME_VFS_FILE_INFO_FOLLOW_LINKS), + options, GNOME_VFS_PRIORITY_DEFAULT, rename_callback, op); gnome_vfs_file_info_unref (partial_file_info); @@ -1393,7 +1402,8 @@ update_links_if_target (NautilusFile *target_file) static gboolean update_info_internal (NautilusFile *file, GnomeVFSFileInfo *info, - gboolean update_name) + gboolean update_name, + gboolean info_has_slow_mime) { GList *node; GnomeVFSFileInfo *info_copy; @@ -1409,12 +1419,13 @@ update_info_internal (NautilusFile *file, } file->details->file_info_is_up_to_date = TRUE; - + file->details->got_slow_mime_type = info_has_slow_mime; if (file->details->info != NULL && gnome_vfs_file_info_matches (file->details->info, info)) { return FALSE; } + /* FIXME bugzilla.gnome.org 42044: Need to let links that * point to the old name know that the file has been renamed. */ @@ -1452,16 +1463,18 @@ update_info_internal (NautilusFile *file, static gboolean update_info_and_name (NautilusFile *file, - GnomeVFSFileInfo *info) + GnomeVFSFileInfo *info, + gboolean info_has_slow_mime) { - return update_info_internal (file, info, TRUE); + return update_info_internal (file, info, TRUE, info_has_slow_mime); } gboolean nautilus_file_update_info (NautilusFile *file, - GnomeVFSFileInfo *info) + GnomeVFSFileInfo *info, + gboolean info_has_slow_mime) { - return update_info_internal (file, info, FALSE); + return update_info_internal (file, info, FALSE, info_has_slow_mime); } static gboolean @@ -3403,7 +3416,7 @@ set_permissions_callback (GnomeVFSAsyncHandle *handle, g_assert (handle == op->handle); if (result == GNOME_VFS_OK && new_info != NULL) { - nautilus_file_update_info (op->file, new_info); + nautilus_file_update_info (op->file, new_info, op->use_slow_mime); } operation_complete (op, result); } @@ -3427,6 +3440,7 @@ nautilus_file_set_permissions (NautilusFile *file, Operation *op; GnomeVFSURI *vfs_uri; GnomeVFSFileInfo *partial_file_info; + GnomeVFSFileInfoOptions options; if (!nautilus_file_can_set_permissions (file)) { /* Claim that something changed even if the permission change failed. @@ -3449,7 +3463,13 @@ nautilus_file_set_permissions (NautilusFile *file, /* Set up a permission change operation. */ op = operation_new (file, callback, callback_data); + op->use_slow_mime = file->details->got_slow_mime_type; + options = GNOME_VFS_FILE_INFO_GET_MIME_TYPE + | GNOME_VFS_FILE_INFO_FOLLOW_LINKS; + if (op->use_slow_mime) { + options |= GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE; + } /* Change the file-on-disk permissions. */ partial_file_info = gnome_vfs_file_info_new (); partial_file_info->permissions = new_permissions; @@ -3457,8 +3477,7 @@ nautilus_file_set_permissions (NautilusFile *file, gnome_vfs_async_set_file_info (&op->handle, vfs_uri, partial_file_info, GNOME_VFS_SET_FILE_INFO_PERMISSIONS, - (GNOME_VFS_FILE_INFO_GET_MIME_TYPE - | GNOME_VFS_FILE_INFO_FOLLOW_LINKS), + options, GNOME_VFS_PRIORITY_DEFAULT, set_permissions_callback, op); gnome_vfs_file_info_unref (partial_file_info); @@ -3701,7 +3720,7 @@ set_owner_and_group_callback (GnomeVFSAsyncHandle *handle, g_assert (handle == op->handle); if (result == GNOME_VFS_OK && new_info != NULL) { - nautilus_file_update_info (op->file, new_info); + nautilus_file_update_info (op->file, new_info, op->use_slow_mime); } operation_complete (op, result); } @@ -3716,9 +3735,17 @@ set_owner_and_group (NautilusFile *file, Operation *op; GnomeVFSURI *uri; GnomeVFSFileInfo *partial_file_info; + GnomeVFSFileInfoOptions options; /* Set up a owner-change operation. */ op = operation_new (file, callback, callback_data); + op->use_slow_mime = file->details->got_slow_mime_type; + + options = GNOME_VFS_FILE_INFO_GET_MIME_TYPE + | GNOME_VFS_FILE_INFO_FOLLOW_LINKS; + if (op->use_slow_mime) { + options |= GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE; + } /* Change the file-on-disk owner. */ partial_file_info = gnome_vfs_file_info_new (); @@ -3729,8 +3756,7 @@ set_owner_and_group (NautilusFile *file, gnome_vfs_async_set_file_info (&op->handle, uri, partial_file_info, GNOME_VFS_SET_FILE_INFO_OWNER, - (GNOME_VFS_FILE_INFO_GET_MIME_TYPE - | GNOME_VFS_FILE_INFO_FOLLOW_LINKS), + options, GNOME_VFS_PRIORITY_DEFAULT, set_owner_and_group_callback, op); gnome_vfs_file_info_unref (partial_file_info); @@ -4702,6 +4728,13 @@ nautilus_file_get_file_type (NautilusFile *file) return ((NautilusFileClass*)G_OBJECT_GET_CLASS (file))->get_file_type (file); } +gboolean +nautilus_file_needs_slow_mime_type (NautilusFile *file) +{ + return !file->details->got_slow_mime_type && + has_local_path (file); +} + /** * nautilus_file_get_mime_type * @@ -5367,8 +5400,6 @@ nautilus_file_call_when_ready (NautilusFile *file, gpointer callback_data) { - g_return_if_fail (callback != NULL); - if (file == NULL) { (* callback) (file, callback_data); return; @@ -5430,6 +5461,12 @@ invalidate_file_info (NautilusFile *file) file->details->file_info_is_up_to_date = FALSE; } +static void +invalidate_slow_mime_type (NautilusFile *file) +{ + file->details->file_info_is_up_to_date = FALSE; +} + static void invalidate_link_info (NautilusFile *file) { @@ -5481,6 +5518,9 @@ nautilus_file_invalidate_attributes_internal (NautilusFile *file, if (request.file_info) { invalidate_file_info (file); } + if (request.slow_mime_type) { + invalidate_slow_mime_type (file); + } if (request.top_left_text) { invalidate_top_left_text (file); } @@ -5572,6 +5612,7 @@ nautilus_file_get_all_attributes (void) NAUTILUS_FILE_ATTRIBUTE_MIME_TYPE | NAUTILUS_FILE_ATTRIBUTE_TOP_LEFT_TEXT | NAUTILUS_FILE_ATTRIBUTE_DISPLAY_NAME | + NAUTILUS_FILE_ATTRIBUTE_SLOW_MIME_TYPE | NAUTILUS_FILE_ATTRIBUTE_VOLUMES; } diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h index c945fd391..14ec51d07 100644 --- a/libnautilus-private/nautilus-file.h +++ b/libnautilus-private/nautilus-file.h @@ -138,6 +138,7 @@ GnomeVFSFileType nautilus_file_get_file_type (Nautilu char * nautilus_file_get_mime_type (NautilusFile *file); gboolean nautilus_file_is_mime_type (NautilusFile *file, const char *mime_type); +gboolean nautilus_file_needs_slow_mime_type (NautilusFile *file); gboolean nautilus_file_is_symbolic_link (NautilusFile *file); char * nautilus_file_get_volume_free_space (NautilusFile *file); char * nautilus_file_get_volume_name (NautilusFile *file); diff --git a/libnautilus-private/nautilus-mime-actions.c b/libnautilus-private/nautilus-mime-actions.c index 406ef8347..30951f14f 100644 --- a/libnautilus-private/nautilus-mime-actions.c +++ b/libnautilus-private/nautilus-mime-actions.c @@ -98,7 +98,8 @@ nautilus_mime_actions_get_minimum_file_attributes (void) return NAUTILUS_FILE_ATTRIBUTE_VOLUMES | NAUTILUS_FILE_ATTRIBUTE_ACTIVATION_URI | NAUTILUS_FILE_ATTRIBUTE_METADATA | - NAUTILUS_FILE_ATTRIBUTE_MIME_TYPE; + NAUTILUS_FILE_ATTRIBUTE_MIME_TYPE | + NAUTILUS_FILE_ATTRIBUTE_SLOW_MIME_TYPE; } -- cgit v1.2.1