From 06d213550273d6e1cc7b81a86a5545bba511de88 Mon Sep 17 00:00:00 2001 From: Michael Webster Date: Wed, 11 Mar 2026 13:43:10 -0400 Subject: [PATCH] nemo-file-operations.c: Fix file copies breaking ownership rules. Removes G_FILE_COPY_ALL_METADATA flag for copies. Default metadata is already copied, but this was overriding ownership of the source when it wasn't appropriate. Fixes #3730. --- libnemo-private/nemo-file-operations.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/libnemo-private/nemo-file-operations.c b/libnemo-private/nemo-file-operations.c index 9c3309441..eb4d8a9bf 100644 --- a/libnemo-private/nemo-file-operations.c +++ b/libnemo-private/nemo-file-operations.c @@ -3991,8 +3991,13 @@ copy_move_directory (CopyMoveJob *copy_job, } if (create_dest) { - flags = (readonly_source_fs) ? G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_TARGET_DEFAULT_PERMS - : G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA; + flags = G_FILE_COPY_NOFOLLOW_SYMLINKS; + if (readonly_source_fs) { + flags |= G_FILE_COPY_TARGET_DEFAULT_PERMS; + } else if (copy_job->is_move) { + flags |= G_FILE_COPY_ALL_METADATA; + } + /* Ignore errors here. Failure to copy metadata is not a hard error */ g_file_copy_attributes (src, *dest, flags, @@ -4561,13 +4566,6 @@ copy_move_file (CopyMoveJob *copy_job, } if (res) { - if (!copy_job->is_move) { - /* Ignore errors here. Failure to copy metadata is not a hard error */ - g_file_copy_attributes (src, dest, - flags | G_FILE_COPY_ALL_METADATA, - job->cancellable, NULL); - } - transfer_info->num_files ++; report_copy_progress (copy_job, source_info, transfer_info);