From 4535683b3f42b6840e01bd94fe6ea792b0ebeecf Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 22 Feb 2010 12:37:16 +0100 Subject: [PATCH] Keep metadata when files are renamed and trashed This fixes https://bugzilla.gnome.org/show_bug.cgi?id=609813 --- gio/glocalfile.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/gio/glocalfile.c b/gio/glocalfile.c index a0b7cb30f..ec290e7a3 100644 --- a/gio/glocalfile.c +++ b/gio/glocalfile.c @@ -1099,6 +1099,8 @@ g_local_file_set_display_name (GFile *file, GLocalFile *local, *new_local; GFile *new_file, *parent; struct _g_stat_struct statbuf; + GVfsClass *class; + GVfs *vfs; int errsv; parent = g_file_get_parent (file); @@ -1157,7 +1159,12 @@ g_local_file_set_display_name (GFile *file, g_object_unref (new_file); return NULL; } - + + vfs = g_vfs_get_default (); + class = G_VFS_GET_CLASS (vfs); + if (class->local_file_moved) + class->local_file_moved (vfs, local->filename, new_local->filename); + return new_file; } @@ -1797,7 +1804,9 @@ g_local_file_trash (GFile *file, int fd; struct _g_stat_struct trash_stat, global_stat; char *dirname, *globaldir; - + GVfsClass *class; + GVfs *vfs; + if (g_lstat (local->filename, &file_stat) != 0) { int errsv = errno; @@ -2020,6 +2029,11 @@ g_local_file_trash (GFile *file, return FALSE; } + vfs = g_vfs_get_default (); + class = G_VFS_GET_CLASS (vfs); + if (class->local_file_moved) + class->local_file_moved (vfs, local->filename, trashfile); + g_free (trashfile); /* TODO: Do we need to update mtime/atime here after the move? */