summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-04-26 11:29:04 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-04-26 11:32:45 +0200
commit2f1765d80392c06166d077c27a9a6661edd7c128 (patch)
tree0820e6ab4e227994c8ff30dfc431cec0d46f0dc1
parent6ffaf5ea66da7772cba6a091b26b41dc9c0e5e70 (diff)
downloadnautilus-2f1765d80392c06166d077c27a9a6661edd7c128.tar.gz
directory, file: add function to query FUSE handling
We use checks to know whether a file is local, using g_file_is_native. However, we also need to know for some cases when a file, even if no native, can be handled like native, using FUSE. This will be needed for the selection of default applications on remote locations, and will be used in a upcoming patch. https://bugzilla.gnome.org/show_bug.cgi?id=764506
-rw-r--r--src/nautilus-directory.c29
-rw-r--r--src/nautilus-directory.h1
-rw-r--r--src/nautilus-file.c8
-rw-r--r--src/nautilus-file.h1
4 files changed, 38 insertions, 1 deletions
diff --git a/src/nautilus-directory.c b/src/nautilus-directory.c
index 8cee2251b..3595406fe 100644
--- a/src/nautilus-directory.c
+++ b/src/nautilus-directory.c
@@ -642,15 +642,42 @@ nautilus_directory_new (GFile *location)
gboolean
nautilus_directory_is_local (NautilusDirectory *directory)
{
+ g_autofree char* path = NULL;
+
+ g_return_val_if_fail (NAUTILUS_IS_DIRECTORY (directory), FALSE);
+
+ if (directory->details->location == NULL) {
+ return TRUE;
+ }
+
+ path = g_file_get_path (directory->details->location);
+
+ return nautilus_directory_is_in_trash (directory) ||
+ nautilus_directory_is_in_recent (directory) ||
+ g_file_is_native (directory->details->location) ||
+ path != NULL;
+}
+
+gboolean
+nautilus_directory_is_local_or_fuse (NautilusDirectory *directory)
+{
+ g_autofree char* path = NULL;
+
g_return_val_if_fail (NAUTILUS_IS_DIRECTORY (directory), FALSE);
if (directory->details->location == NULL) {
return TRUE;
}
+ /* If the glib reports a path, then it can use FUSE to convert the uri
+ * to a local path
+ */
+ path = g_file_get_path (directory->details->location);
+
return nautilus_directory_is_in_trash (directory) ||
nautilus_directory_is_in_recent (directory) ||
- g_file_is_native (directory->details->location);
+ g_file_is_native (directory->details->location) ||
+ path != NULL;
}
gboolean
diff --git a/src/nautilus-directory.h b/src/nautilus-directory.h
index 25e3aa211..dc8c73253 100644
--- a/src/nautilus-directory.h
+++ b/src/nautilus-directory.h
@@ -221,6 +221,7 @@ gboolean nautilus_directory_are_all_files_seen (NautilusDirector
/* Return true if the directory is local. */
gboolean nautilus_directory_is_local (NautilusDirectory *directory);
+gboolean nautilus_directory_is_local_or_fuse (NautilusDirectory *directory);
gboolean nautilus_directory_is_in_trash (NautilusDirectory *directory);
gboolean nautilus_directory_is_in_recent (NautilusDirectory *directory);
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
index 49f23c95e..e3cbdfe20 100644
--- a/src/nautilus-file.c
+++ b/src/nautilus-file.c
@@ -2048,6 +2048,14 @@ nautilus_file_is_local (NautilusFile *file)
return nautilus_directory_is_local (file->details->directory);
}
+gboolean
+nautilus_file_is_local_or_fuse (NautilusFile *file)
+{
+ g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
+
+ return nautilus_directory_is_local_or_fuse (file->details->directory);
+}
+
static void
update_link (NautilusFile *link_file, NautilusFile *target_file)
{
diff --git a/src/nautilus-file.h b/src/nautilus-file.h
index 46085b26b..10505753f 100644
--- a/src/nautilus-file.h
+++ b/src/nautilus-file.h
@@ -402,6 +402,7 @@ gboolean nautilus_file_matches_uri (Nautilu
/* Is the file local? */
gboolean nautilus_file_is_local (NautilusFile *file);
+gboolean nautilus_file_is_local_or_fuse (NautilusFile *file);
/* Comparing two file objects for sorting */
NautilusFileSortType nautilus_file_get_default_sort_type (NautilusFile *file,