summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nautilus-file-conflict-dialog.c6
-rw-r--r--src/nautilus-file-conflict-dialog.h1
-rw-r--r--src/nautilus-operations-ui-manager.c25
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"));
+ }
}
}