diff options
-rw-r--r-- | src/nautilus-file-conflict-dialog.c | 6 | ||||
-rw-r--r-- | src/nautilus-file-conflict-dialog.h | 1 | ||||
-rw-r--r-- | src/nautilus-operations-ui-manager.c | 25 |
3 files changed, 28 insertions, 4 deletions
diff --git a/src/nautilus-file-conflict-dialog.c b/src/nautilus-file-conflict-dialog.c index 55e536692..62eafd1ec 100644 --- a/src/nautilus-file-conflict-dialog.c +++ b/src/nautilus-file-conflict-dialog.c @@ -153,6 +153,12 @@ nautilus_file_conflict_dialog_disable_skip (NautilusFileConflictDialog *fcd) } void +nautilus_file_conflict_dialog_disable_replace (NautilusFileConflictDialog *fcd) +{ + gtk_widget_set_sensitive (fcd->replace_button, FALSE); +} + +void nautilus_file_conflict_dialog_disable_apply_to_all (NautilusFileConflictDialog *fcd) { gtk_widget_hide (fcd->checkbox); diff --git a/src/nautilus-file-conflict-dialog.h b/src/nautilus-file-conflict-dialog.h index 1b8452fe7..206d10031 100644 --- a/src/nautilus-file-conflict-dialog.h +++ b/src/nautilus-file-conflict-dialog.h @@ -50,6 +50,7 @@ void nautilus_file_conflict_dialog_set_replace_button_label (NautilusFileConflic gchar *label); void nautilus_file_conflict_dialog_disable_skip (NautilusFileConflictDialog *fcd); +void nautilus_file_conflict_dialog_disable_replace (NautilusFileConflictDialog *fcd); void nautilus_file_conflict_dialog_disable_apply_to_all (NautilusFileConflictDialog *fcd); char* nautilus_file_conflict_dialog_get_new_name (NautilusFileConflictDialog *dialog); diff --git a/src/nautilus-operations-ui-manager.c b/src/nautilus-operations-ui-manager.c index ab6da215c..fd56e186b 100644 --- a/src/nautilus-operations-ui-manager.c +++ b/src/nautilus-operations-ui-manager.c @@ -137,7 +137,15 @@ set_copy_move_dialog_text (FileConflictDialogData *data) if (destination_is_directory) { - if (source_is_directory) + if (nautilus_file_is_symbolic_link (data->source) + && !nautilus_file_is_symbolic_link (data->destination)) + { + primary_text = g_strdup_printf (_("You are trying to replace the destination folder ā%sā with a symbolic link."), + destination_name); + message = g_strdup_printf(_("This is not allowed in order to avoid the deletion of the destination folder's contents.")); + message_extra = _("Please rename the symbolic link or press the skip button."); + } + else if (source_is_directory) { primary_text = g_strdup_printf (_("Merge folder ā%sā?"), destination_name); @@ -339,10 +347,19 @@ set_replace_button_label (FileConflictDialogData *data) source_is_directory = nautilus_file_is_directory (data->source); destination_is_directory = nautilus_file_is_directory (data->destination); - if (source_is_directory && destination_is_directory) + if (destination_is_directory) { - nautilus_file_conflict_dialog_set_replace_button_label (data->dialog, - _("Merge")); + if (nautilus_file_is_symbolic_link (data->source) + && !nautilus_file_is_symbolic_link (data->destination)) + { + nautilus_file_conflict_dialog_disable_replace (data->dialog); + nautilus_file_conflict_dialog_disable_apply_to_all (data->dialog); + } + else if (source_is_directory) + { + nautilus_file_conflict_dialog_set_replace_button_label (data->dialog, + _("Merge")); + } } } |