diff options
author | Ondrej Holy <oholy@redhat.com> | 2022-12-06 14:15:09 +0100 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2022-12-13 13:54:12 +0000 |
commit | dffc7f81e7e3e9c9bc5f0870907b4930849e3dcb (patch) | |
tree | 857e1a81e5c0d8f8d4df5aea7de25f094dd45159 | |
parent | 20491b9f345e775e7569212cf029562b3ddb6611 (diff) | |
download | gvfs-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.c | 37 |
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); } |