summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2022-12-06 14:15:09 +0100
committerOndrej Holy <oholy@redhat.com>2022-12-13 13:54:12 +0000
commitdffc7f81e7e3e9c9bc5f0870907b4930849e3dcb (patch)
tree857e1a81e5c0d8f8d4df5aea7de25f094dd45159
parent20491b9f345e775e7569212cf029562b3ddb6611 (diff)
downloadgvfs-dffc7f81e7e3e9c9bc5f0870907b4930849e3dcb.tar.gz
backend: Add support for xx-large and x-large thumbnails
GVfs doesn't support x-large and xx-large thumbnails currently. Consequently, thumbnails are not shown for remote locations in Nautilus on HiDPI screens. GLib added support for them over glib!2941 recently. Let's do the similar change for GVfs. Relates: glib#2767
-rw-r--r--daemon/gvfsbackend.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/daemon/gvfsbackend.c b/daemon/gvfsbackend.c
index 599733ef..fa1389ea 100644
--- a/daemon/gvfsbackend.c
+++ b/daemon/gvfsbackend.c
@@ -524,6 +524,8 @@ get_thumbnail_attributes (const char *uri,
GChecksum *checksum;
char *filename;
char *basename;
+ const char *size_dirs[4] = { "xx-large", "x-large", "large", "normal" };
+ gsize i;
checksum = g_checksum_new (G_CHECKSUM_MD5);
g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
@@ -531,34 +533,31 @@ get_thumbnail_attributes (const char *uri,
basename = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
g_checksum_free (checksum);
- filename = g_build_filename (g_get_user_cache_dir (),
- "thumbnails", "large", basename,
- NULL);
+ for (i = 0; i < G_N_ELEMENTS (size_dirs); i++)
+ {
+ filename = g_build_filename (g_get_user_cache_dir (),
+ "thumbnails", size_dirs[i], basename,
+ NULL);
+ if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
+ break;
- if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
+ g_clear_pointer (&filename, g_free);
+ }
+
+ if (filename)
g_file_info_set_attribute_byte_string (info, G_FILE_ATTRIBUTE_THUMBNAIL_PATH, filename);
else
{
- g_free (filename);
filename = g_build_filename (g_get_user_cache_dir (),
- "thumbnails", "normal", basename,
+ "thumbnails", "fail",
+ "gnome-thumbnail-factory",
+ basename,
NULL);
if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
- g_file_info_set_attribute_byte_string (info, G_FILE_ATTRIBUTE_THUMBNAIL_PATH, filename);
- else
- {
- g_free (filename);
- filename = g_build_filename (g_get_user_cache_dir (),
- "thumbnails", "fail",
- "gnome-thumbnail-factory",
- basename,
- NULL);
-
- if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
- g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_THUMBNAILING_FAILED, TRUE);
- }
+ g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_THUMBNAILING_FAILED, TRUE);
}
+
g_free (basename);
g_free (filename);
}