diff --git a/src/nautilus-file-utilities.c b/src/nautilus-file-utilities.c index 575c138cf5a8cea614e58072671298ca905d34a5..40acff9389490ba3271034c3e33124fc628317d3 100644 --- a/src/nautilus-file-utilities.c +++ b/src/nautilus-file-utilities.c @@ -1489,3 +1489,21 @@ location_settings_search_get_recursive_for_location (GFile *location) return recursive; } + +gboolean +nautilus_file_system_is_remote (const char *file_system) +{ + static const gchar * const remote_types[] = + { + "afp", + "google-drive", + "sftp", + "webdav", + "ftp", + "nfs", + "cifs", + NULL + }; + + return file_system != NULL && g_strv_contains (remote_types, file_system); +} diff --git a/src/nautilus-file-utilities.h b/src/nautilus-file-utilities.h index 67df0e4d9a29fc4448eaa3672776d7d352196b42..22d851c1b5bc4e1da9216dbdefbd02c400942522 100644 --- a/src/nautilus-file-utilities.h +++ b/src/nautilus-file-utilities.h @@ -141,3 +141,5 @@ gchar * nautilus_uri_to_native_uri (const gchar *uri); NautilusQueryRecursive location_settings_search_get_recursive (void); NautilusQueryRecursive location_settings_search_get_recursive_for_location (GFile *location); + +gboolean nautilus_file_system_is_remote (const char *file_system); diff --git a/src/nautilus-file.c b/src/nautilus-file.c index dc3a788d083d565053e4a3bd31f461e3d204be63..c62b47a6b488d11aa1e5a292270001b9c3a4c794 100644 --- a/src/nautilus-file.c +++ b/src/nautilus-file.c @@ -8065,18 +8065,6 @@ nautilus_file_is_in_starred (NautilusFile *file) return nautilus_directory_is_in_starred (file->details->directory); } -static const gchar * const remote_types[] = -{ - "afp", - "google-drive", - "sftp", - "webdav", - "ftp", - "nfs", - "cifs", - NULL -}; - /** * nautilus_file_is_remote * @@ -8100,7 +8088,7 @@ nautilus_file_is_remote (NautilusFile *file) filesystem_type = nautilus_file_get_filesystem_type (file); - return filesystem_type != NULL && g_strv_contains (remote_types, filesystem_type); + return nautilus_file_system_is_remote (filesystem_type); } /** diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c index 23c1c7e882cd06f2bceb7cf6a251ffaa58b4a301..b5a67b7302137a0c8dc54bc656fe62bc7424b3de 100644 --- a/src/nautilus-search-engine.c +++ b/src/nautilus-search-engine.c @@ -23,7 +23,7 @@ #include "nautilus-search-engine.h" #include "nautilus-search-engine-private.h" -#include "nautilus-file.h" +#include "nautilus-file-utilities.h" #include "nautilus-search-engine-model.h" #include #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH @@ -563,8 +563,20 @@ is_recursive_search (NautilusSearchEngineType engine_type, case NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY: { - g_autoptr (NautilusFile) file = nautilus_file_get (location); - return !nautilus_file_is_remote (file); + g_autoptr (GFileInfo) file_system_info = NULL; + + file_system_info = g_file_query_filesystem_info (location, + G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, + NULL, NULL); + if (file_system_info != NULL) + { + const char *file_system; + + file_system = g_file_info_get_attribute_string (file_system_info, + G_FILE_ATTRIBUTE_FILESYSTEM_TYPE); + + return !nautilus_file_system_is_remote (file_system); + } } }