[nautilus] search: be more robust to peek is remote
- From: Carlos Soriano Sánchez <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] search: be more robust to peek is remote
- Date: Thu, 3 Sep 2015 14:18:46 +0000 (UTC)
commit bbc175eb49e07106f0b3d4b3482e9c704ddef8b0
Author: Carlos Soriano <csoriano gnome org>
Date: Thu Sep 3 15:51:14 2015 +0200
search: be more robust to peek is remote
Few fixes to be more robust and correct when checking if
a file or directory is remote.
libnautilus-private/nautilus-directory.c | 11 +++++++++-
libnautilus-private/nautilus-file.c | 6 ++++-
libnautilus-private/nautilus-search-directory.c | 2 +-
src/nautilus-files-view.c | 25 +++++++++++++---------
4 files changed, 31 insertions(+), 13 deletions(-)
---
diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c
index fad84c9..75f70f9 100644
--- a/libnautilus-private/nautilus-directory.c
+++ b/libnautilus-private/nautilus-directory.c
@@ -615,6 +615,7 @@ nautilus_directory_is_remote (NautilusDirectory *directory)
{
GFileInfo *info;
gboolean is_remote;
+ GError *error = NULL;
g_assert (NAUTILUS_IS_DIRECTORY (directory));
@@ -623,7 +624,15 @@ nautilus_directory_is_remote (NautilusDirectory *directory)
}
info = g_file_query_filesystem_info (directory->details->location, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE,
- NULL, NULL);
+ NULL, &error);
+ if (error) {
+ /* Custom schemas like x-nautilus-desktop or other-locations:///
+ * should not yell warnings */
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED))
+ g_warning ("Can't peek the uri: %s filesystem type with error: %s",
+ g_file_get_uri (directory->details->location), error->message);
+ }
+ g_clear_error (&error);
if (info) {
const gchar *type;
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 1d36b08..6807cad 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -7012,7 +7012,11 @@ nautilus_file_is_remote (NautilusFile *file)
{
g_assert (NAUTILUS_IS_FILE (file));
- return nautilus_directory_is_remote (file->details->directory);
+ if (nautilus_file_is_directory (file))
+ return nautilus_directory_is_remote (nautilus_directory_get_for_file (file));
+ else
+ return nautilus_directory_is_remote (file->details->directory);
+
}
/**
diff --git a/libnautilus-private/nautilus-search-directory.c b/libnautilus-private/nautilus-search-directory.c
index 86cf2bf..5de492f 100644
--- a/libnautilus-private/nautilus-search-directory.c
+++ b/libnautilus-private/nautilus-search-directory.c
@@ -188,7 +188,7 @@ start_search (NautilusSearchDirectory *search)
/* It's too slow to search recursively on locations that are on the network. So
* for that case, just search in the current directory */
recursive = g_settings_get_boolean (nautilus_preferences, "enable-recursive-search") &&
- !nautilus_file_is_remote (directory_as_file);
+ !nautilus_directory_is_remote (search->details->base_model);
g_object_unref (directory_as_file);
g_object_set (simple_provider, "recursive", recursive, NULL);
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 4986da3..67aaedf 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -715,13 +715,21 @@ showing_trash_directory (NautilusFilesView *view)
static gboolean
showing_remote_directory (NautilusFilesView *view)
{
- NautilusFile *file;
+ NautilusDirectory *base;
- file = nautilus_files_view_get_directory_as_file (view);
- if (file != NULL) {
- return nautilus_file_is_remote (file);
- }
- return FALSE;
+ /* Nautilus search is kind of special, since when we swtich to a search directory
+ * its uri is something invented, not a real GFile or where we were before
+ * entering search. For that we need to get the base model of the search directory,
+ * that is basically the real location we were before entering search */
+ if (NAUTILUS_IS_SEARCH_DIRECTORY (view->details->model))
+ base = nautilus_search_directory_get_base_model (NAUTILUS_SEARCH_DIRECTORY
(view->details->model));
+ else
+ base = view->details->model;
+
+ if (base != NULL)
+ return nautilus_directory_is_remote (base);
+ else
+ return FALSE;
}
static gboolean
@@ -6947,10 +6955,7 @@ static void
check_remote_warning_bar (NautilusFilesView *view)
{
if (nautilus_view_is_searching (NAUTILUS_VIEW (view))) {
- NautilusDirectory *base;
-
- base = nautilus_search_directory_get_base_model (NAUTILUS_SEARCH_DIRECTORY
(view->details->model));
- if (nautilus_directory_is_remote (base))
+ if (showing_trash_directory (view))
gtk_widget_show_all (view->details->remote_warning_bar);
else
gtk_widget_hide (view->details->remote_warning_bar);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]