diff options
author | Christian Neumair <chris@gnome-de.org> | 2005-09-19 13:51:16 +0000 |
---|---|---|
committer | Christian Neumair <cneumair@src.gnome.org> | 2005-09-19 13:51:16 +0000 |
commit | 836edd3b343cbcc90318ed8642be1e9b301226d6 (patch) | |
tree | 44c503a25507583667796283eaa36eee1749386b | |
parent | 371c3a3812d1657f08e0324558d660365d842368 (diff) | |
download | nautilus-836edd3b343cbcc90318ed8642be1e9b301226d6.tar.gz |
Copy thumbnails when copying file metadata. Fixes #45191.
2005-09-19 Christian Neumair <chris@gnome-de.org>
* libnautilus-private/nautilus-metafile.c: (copy_file_metadata):
* libnautilus-private/nautilus-thumbnails.c:
(nautilus_update_thumbnail_file_copied),
(nautilus_update_thumbnail_file_renamed),
(nautilus_remove_thumbnail_for_file):
* libnautilus-private/nautilus-thumbnails.h:
Copy thumbnails when copying file metadata. Fixes #45191.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | libnautilus-private/nautilus-metafile.c | 11 | ||||
-rw-r--r-- | libnautilus-private/nautilus-thumbnails.c | 32 | ||||
-rw-r--r-- | libnautilus-private/nautilus-thumbnails.h | 8 |
4 files changed, 43 insertions, 18 deletions
@@ -1,5 +1,15 @@ 2005-09-19 Christian Neumair <chris@gnome-de.org> + * libnautilus-private/nautilus-metafile.c: (copy_file_metadata): + * libnautilus-private/nautilus-thumbnails.c: + (nautilus_update_thumbnail_file_copied), + (nautilus_update_thumbnail_file_renamed), + (nautilus_remove_thumbnail_for_file): + * libnautilus-private/nautilus-thumbnails.h: + Copy thumbnails when copying file metadata. Fixes #45191. + +2005-09-19 Christian Neumair <chris@gnome-de.org> + * src/file-manager/fm-list-view.c: (drag_begin_callback), (motion_notify_callback): Setup drag in the "drag-begin" handler. diff --git a/libnautilus-private/nautilus-metafile.c b/libnautilus-private/nautilus-metafile.c index c1070bf4f..fc64b26a7 100644 --- a/libnautilus-private/nautilus-metafile.c +++ b/libnautilus-private/nautilus-metafile.c @@ -1414,6 +1414,8 @@ copy_file_metadata (NautilusMetafile *source_metafile, { xmlNodePtr source_node, node, root; GHashTable *hash, *changes; + char *source_file_uri; + char *destination_file_uri; g_return_if_fail (NAUTILUS_IS_METAFILE (source_metafile)); g_return_if_fail (source_file_name != NULL); @@ -1457,9 +1459,12 @@ copy_file_metadata (NautilusMetafile *source_metafile, } } - /* FIXME: Do we want to copy the thumbnail here like in the - * rename and remove cases? - */ + /* Copy the thumbnail for the file, if any. */ + source_file_uri = metafile_get_file_uri (source_metafile, source_file_name); + destination_file_uri = metafile_get_file_uri (destination_metafile, destination_file_name); + nautilus_update_thumbnail_file_copied (source_file_uri, destination_file_uri); + g_free (source_file_uri); + g_free (destination_file_uri); } static void diff --git a/libnautilus-private/nautilus-thumbnails.c b/libnautilus-private/nautilus-thumbnails.c index 4a6e2c5be..65db7b65e 100644 --- a/libnautilus-private/nautilus-thumbnails.c +++ b/libnautilus-private/nautilus-thumbnails.c @@ -178,27 +178,28 @@ thumbnail_thread_starter_cb (gpointer data) } void -nautilus_update_thumbnail_file_renamed (const char *old_file_uri, const char *new_file_uri) +nautilus_update_thumbnail_file_copied (const char *source_file_uri, + const char *destination_file_uri) { char *old_thumbnail_path; GdkPixbuf *pixbuf; GnomeVFSFileInfo *file_info; GnomeThumbnailFactory *factory; - old_thumbnail_path = gnome_thumbnail_path_for_uri (old_file_uri, GNOME_THUMBNAIL_SIZE_NORMAL); + old_thumbnail_path = gnome_thumbnail_path_for_uri (source_file_uri, GNOME_THUMBNAIL_SIZE_NORMAL); if (old_thumbnail_path != NULL && g_file_test (old_thumbnail_path, G_FILE_TEST_EXISTS)) { file_info = gnome_vfs_file_info_new (); - if (gnome_vfs_get_file_info (new_file_uri, + if (gnome_vfs_get_file_info (destination_file_uri, file_info, GNOME_VFS_FILE_INFO_DEFAULT) == GNOME_VFS_OK) { pixbuf = gdk_pixbuf_new_from_file (old_thumbnail_path, NULL); - if (pixbuf && gnome_thumbnail_has_uri (pixbuf, old_file_uri)) { + if (pixbuf && gnome_thumbnail_has_uri (pixbuf, source_file_uri)) { factory = nautilus_icon_factory_get_thumbnail_factory (); gnome_thumbnail_factory_save_thumbnail (factory, pixbuf, - new_file_uri, + destination_file_uri, file_info->mtime); g_object_unref (factory); } @@ -207,7 +208,6 @@ nautilus_update_thumbnail_file_renamed (const char *old_file_uri, const char *ne g_object_unref (pixbuf); } - unlink (old_thumbnail_path); } gnome_vfs_file_info_unref (file_info); } @@ -215,16 +215,24 @@ nautilus_update_thumbnail_file_renamed (const char *old_file_uri, const char *ne g_free (old_thumbnail_path); } +void +nautilus_update_thumbnail_file_renamed (const char *source_file_uri, + const char *destination_file_uri) +{ + nautilus_update_thumbnail_file_copied (source_file_uri, destination_file_uri); + nautilus_remove_thumbnail_for_file (source_file_uri); +} + void -nautilus_remove_thumbnail_for_file (const char *old_file_uri) +nautilus_remove_thumbnail_for_file (const char *file_uri) { - char *old_thumbnail_path; + char *thumbnail_path; - old_thumbnail_path = gnome_thumbnail_path_for_uri (old_file_uri, GNOME_THUMBNAIL_SIZE_NORMAL); - if (old_thumbnail_path != NULL) { - unlink (old_thumbnail_path); + thumbnail_path = gnome_thumbnail_path_for_uri (file_uri, GNOME_THUMBNAIL_SIZE_NORMAL); + if (thumbnail_path != NULL) { + unlink (thumbnail_path); } - g_free (old_thumbnail_path); + g_free (thumbnail_path); } void diff --git a/libnautilus-private/nautilus-thumbnails.h b/libnautilus-private/nautilus-thumbnails.h index 65b462906..402cf4fd7 100644 --- a/libnautilus-private/nautilus-thumbnails.h +++ b/libnautilus-private/nautilus-thumbnails.h @@ -32,9 +32,11 @@ void nautilus_create_thumbnail (NautilusFile *file); void nautilus_thumbnail_frame_image (GdkPixbuf **pixbuf); GdkPixbuf *nautilus_thumbnail_load_framed_image (const char *path); -void nautilus_update_thumbnail_file_renamed (const char *old_file_uri, - const char *new_file_uri); -void nautilus_remove_thumbnail_for_file (const char *old_file_uri); +void nautilus_update_thumbnail_file_copied (const char *source_file_uri, + const char *destination_file_uri); +void nautilus_update_thumbnail_file_renamed (const char *source_file_uri, + const char *destination_file_uri); +void nautilus_remove_thumbnail_for_file (const char *file_uri); /* Queue handling: */ void nautilus_thumbnail_remove_from_queue (const char *file_uri); |