mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-04-27 17:46:53 +02:00
Keep metadata when files are renamed and trashed
This fixes https://bugzilla.gnome.org/show_bug.cgi?id=609813
This commit is contained in:
parent
515434bdcb
commit
4535683b3f
@ -1099,6 +1099,8 @@ g_local_file_set_display_name (GFile *file,
|
|||||||
GLocalFile *local, *new_local;
|
GLocalFile *local, *new_local;
|
||||||
GFile *new_file, *parent;
|
GFile *new_file, *parent;
|
||||||
struct _g_stat_struct statbuf;
|
struct _g_stat_struct statbuf;
|
||||||
|
GVfsClass *class;
|
||||||
|
GVfs *vfs;
|
||||||
int errsv;
|
int errsv;
|
||||||
|
|
||||||
parent = g_file_get_parent (file);
|
parent = g_file_get_parent (file);
|
||||||
@ -1157,7 +1159,12 @@ g_local_file_set_display_name (GFile *file,
|
|||||||
g_object_unref (new_file);
|
g_object_unref (new_file);
|
||||||
return NULL;
|
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;
|
return new_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1797,7 +1804,9 @@ g_local_file_trash (GFile *file,
|
|||||||
int fd;
|
int fd;
|
||||||
struct _g_stat_struct trash_stat, global_stat;
|
struct _g_stat_struct trash_stat, global_stat;
|
||||||
char *dirname, *globaldir;
|
char *dirname, *globaldir;
|
||||||
|
GVfsClass *class;
|
||||||
|
GVfs *vfs;
|
||||||
|
|
||||||
if (g_lstat (local->filename, &file_stat) != 0)
|
if (g_lstat (local->filename, &file_stat) != 0)
|
||||||
{
|
{
|
||||||
int errsv = errno;
|
int errsv = errno;
|
||||||
@ -2020,6 +2029,11 @@ g_local_file_trash (GFile *file,
|
|||||||
return FALSE;
|
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);
|
g_free (trashfile);
|
||||||
|
|
||||||
/* TODO: Do we need to update mtime/atime here after the move? */
|
/* TODO: Do we need to update mtime/atime here after the move? */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user