Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions libnemo-private/nemo-file-operations.c
Original file line number Diff line number Diff line change
Expand Up @@ -4398,6 +4398,16 @@ get_target_file_for_display_name (GFile *dir,
return dest;
}

static gboolean
should_always_merge_dirs (void)
{
gboolean confirm_merge;

confirm_merge = g_settings_get_boolean (nemo_preferences, NEMO_PREFERENCES_ALWAYS_MERGE_DIRS);

return confirm_merge;
}

/* Debuting files is non-NULL only for toplevel items */
static void
copy_move_file (CopyMoveJob *copy_job,
Expand Down Expand Up @@ -4665,6 +4675,10 @@ copy_move_file (CopyMoveJob *copy_job,
is_a_merge = TRUE;
}

if (is_a_merge && should_always_merge_dirs()) {
job->merge_all = TRUE;
}

if ((is_a_merge && job->merge_all) ||
(!is_a_merge && job->replace_all)) {
overwrite = TRUE;
Expand Down Expand Up @@ -5338,6 +5352,10 @@ move_file_prepare (CopyMoveJob *move_job,
is_merge = TRUE;
}

if (is_merge && should_always_merge_dirs()) {
job->merge_all = TRUE;
}

if ((is_merge && job->merge_all) ||
(!is_merge && job->replace_all)) {
overwrite = TRUE;
Expand Down
3 changes: 3 additions & 0 deletions libnemo-private/nemo-global-preferences.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ G_BEGIN_DECLS
#define NEMO_PREFERENCES_ENABLE_DELETE "enable-delete"
#define NEMO_PREFERENCES_SWAP_TRASH_DELETE "swap-trash-delete"

/* Conflic Behavior */
#define NEMO_PREFERENCES_ALWAYS_MERGE_DIRS "always-merge-directories"

/* Desktop options */
#define NEMO_PREFERENCES_DESKTOP_IS_HOME_DIR "desktop-is-home-dir"

Expand Down
5 changes: 5 additions & 0 deletions libnemo-private/org.nemo.gschema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,11 @@
<summary>Whether to swap the hotkeys for Trash and Delete</summary>
<description>If set to true, the Delete key will permanently delete a file, and the Shift-Delete key will only trash a file.</description>
</key>
<key name="always-merge-directories" type="b">
<default>false</default>
<summary>Whether to automatically resolve conflicts between two directories by merging them.</summary>
<description>If set to true, a file conflict between two directories will always automatically be resolved to "Merge", rather than "Skip" or "Duplicate".</description>
</key>
<key name="show-directory-item-counts" enum="org.nemo.SpeedTradeoff">
<aliases><alias value='local_only' target='local-only'/></aliases>
<default>'local-only'</default>
Expand Down