diff options
Diffstat (limited to 'src/nautilus-files-view.c')
-rw-r--r-- | src/nautilus-files-view.c | 37 |
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; } |