summaryrefslogtreecommitdiff
path: root/src/nautilus-files-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nautilus-files-view.c')
-rw-r--r--src/nautilus-files-view.c37
1 files changed, 32 insertions, 5 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 9ca3adef2..c01ebd3bc 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -7227,7 +7227,7 @@ static gboolean
can_paste_into_file (NautilusFile *file)
{
if (nautilus_file_is_directory (file) &&
- nautilus_file_can_write (file))
+ !nautilus_file_is_filesystem_readonly (file))
{
return TRUE;
}
@@ -7246,7 +7246,7 @@ can_paste_into_file (NautilusFile *file)
* case as can-write */
res = (nautilus_file_get_file_type (activation_file) == G_FILE_TYPE_UNKNOWN) ||
(nautilus_file_get_file_type (activation_file) == G_FILE_TYPE_DIRECTORY &&
- nautilus_file_can_write (activation_file));
+ !nautilus_file_is_filesystem_readonly (activation_file));
nautilus_file_unref (activation_file);
@@ -7475,10 +7475,23 @@ can_delete_all (GList *files)
for (l = files; l != NULL; l = l->next)
{
file = l->data;
- if (!nautilus_file_can_delete (file))
+
+ if (nautilus_file_is_filesystem_readonly (file))
{
return FALSE;
}
+
+ if (!nautilus_file_can_delete (file))
+ {
+ g_autoptr (GFile) location = NULL;
+
+ location = nautilus_file_get_location (file);
+
+ if (!g_file_is_native (location))
+ {
+ return FALSE;
+ }
+ }
}
return TRUE;
}
@@ -7617,7 +7630,7 @@ real_update_actions_state (NautilusFilesView *view)
selection_contains_starred = showing_starred_directory (view);
selection_contains_search = nautilus_view_is_searching (NAUTILUS_VIEW (view));
selection_is_read_only = selection_count == 1 &&
- (!nautilus_file_can_write (NAUTILUS_FILE (selection->data)) &&
+ (nautilus_file_is_filesystem_readonly (NAUTILUS_FILE (selection->data)) &&
!nautilus_file_has_activation_uri (NAUTILUS_FILE (selection->data)));
selection_all_in_trash = all_in_trash (selection);
zoom_level_is_default = nautilus_files_view_is_zoom_level_default (view);
@@ -9006,7 +9019,21 @@ nautilus_files_view_is_read_only (NautilusFilesView *view)
file = nautilus_files_view_get_directory_as_file (view);
if (file != NULL)
{
- return !nautilus_file_can_write (file);
+ g_autoptr (GFile) location = NULL;
+
+ if (nautilus_file_can_write (file))
+ {
+ return FALSE;
+ }
+
+ if (nautilus_file_is_filesystem_readonly (file))
+ {
+ return TRUE;
+ }
+
+ location = nautilus_file_get_location (file);
+
+ return !g_file_is_native (location);
}
return FALSE;
}