From b2cb16567358991e5177a54499229aae0c045375 Mon Sep 17 00:00:00 2001 From: Yongha Hwang <mshrimp@sogang.ac.kr> Date: Tue, 6 Jul 2021 21:13:11 +0000 Subject: [PATCH] Keep modified time of files copied from foreign locations (Issue #218) Copy G_FILE_ATTRIBUTE_TIME_MODIFIED after copying file contents Fixes: #218 MR: !127 --- thunar/thunar-transfer-job.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/thunar/thunar-transfer-job.c b/thunar/thunar-transfer-job.c index 2c8329288..5baa48bfd 100644 --- a/thunar/thunar-transfer-job.c +++ b/thunar/thunar-transfer-job.c @@ -411,10 +411,11 @@ ttj_copy_file (ThunarTransferJob *job, gboolean merge_directories, GError **error) { - GFileType source_type; - GFileType target_type; - gboolean target_exists; - GError *err = NULL; + GFileInfo *info; + GFileType source_type; + GFileType target_type; + gboolean target_exists; + GError *err = NULL; _thunar_return_val_if_fail (THUNAR_IS_TRANSFER_JOB (job), FALSE); _thunar_return_val_if_fail (G_IS_FILE (source_file), FALSE); @@ -458,6 +459,26 @@ ttj_copy_file (ThunarTransferJob *job, exo_job_get_cancellable (EXO_JOB (job)), thunar_transfer_job_progress, job, &err); + /** + * MR !127 notes: + * (Discusssion: https://gitlab.xfce.org/xfce/thunar/-/merge_requests/127) + * + * Proper solution for copying lost metadata requires + * `g_file_build_attribute_list_for_copy`, which is + * added in Glib 2.68 (which is too recent a version + * to add for now) so we leave a comment here. Patch + * this when 2.68 is ready. + **/ + if (G_UNLIKELY (err == NULL && !g_file_is_native (source_file))) + { + info = g_file_query_info (source_file, G_FILE_ATTRIBUTE_TIME_MODIFIED, G_FILE_QUERY_INFO_NONE, + exo_job_get_cancellable (EXO_JOB (job)), &err); + + g_file_set_attributes_from_info (target_file, info, G_FILE_QUERY_INFO_NONE, + exo_job_get_cancellable (EXO_JOB (job)), &err); + g_clear_object (&info); + } + /* check if there were errors */ if (G_UNLIKELY (err != NULL && err->domain == G_IO_ERROR)) { -- GitLab