summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Berla <corey@berla.me>2022-09-29 14:28:53 -0700
committerCorey Berla <corey@berla.me>2022-10-03 12:15:11 -0700
commitbd8133275dabeac2970501177423cef94d106b2f (patch)
tree0ab02238847a6adbbe2e5f3299260a79e6abaf57
parent9833c15fbe271f61d5fdd2787d495baad2069d67 (diff)
downloadnautilus-wip/corey/thumbnail-large.tar.gz
thumbnail: Use new glib attributes to get the thumbnails for x/xx largewip/corey/thumbnail-large
When in the introduction of x-large and xx-large thumbnails in 278435e3c20244b48986c6cd8b72c5317668c72d, we no longers retrieved the thumbnails correctly, because glib/gio was only looking for normal and large thumbnail paths. glib!2918 introduces new attributes for x-large and xx-large thumbnails paths. Produce the correct file attribute depending on the size thumbnail we are generating. https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2918/
-rw-r--r--src/nautilus-file.c2
-rw-r--r--src/nautilus-thumbnails.c30
-rw-r--r--src/nautilus-thumbnails.h7
3 files changed, 37 insertions, 2 deletions
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
index 02e8307b0..818b4510f 100644
--- a/src/nautilus-file.c
+++ b/src/nautilus-file.c
@@ -2830,7 +2830,7 @@ update_info_internal (NautilusFile *file,
file->details->icon = g_object_ref (icon);
}
- thumbnail_path = g_file_info_get_attribute_byte_string (info, G_FILE_ATTRIBUTE_THUMBNAIL_PATH);
+ thumbnail_path = g_file_info_get_attribute_byte_string (info, get_thumbnail_path_attribute ());
if (g_strcmp0 (file->details->thumbnail_path, thumbnail_path) != 0)
{
changed = TRUE;
diff --git a/src/nautilus-thumbnails.c b/src/nautilus-thumbnails.c
index 8515844a7..e40147e1d 100644
--- a/src/nautilus-thumbnails.c
+++ b/src/nautilus-thumbnails.c
@@ -132,6 +132,36 @@ free_thumbnail_info (NautilusThumbnailInfo *info)
g_free (info);
}
+const char*
+get_thumbnail_path_attribute (void)
+{
+ switch (thumbnail_size)
+ {
+ case GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE:
+ {
+ return G_FILE_ATTRIBUTE_THUMBNAIL_PATH_LARGE;
+ }
+ break;
+
+ case GNOME_DESKTOP_THUMBNAIL_SIZE_XLARGE:
+ {
+ return G_FILE_ATTRIBUTE_THUMBNAIL_PATH_XLARGE;
+ }
+ break;
+
+ case GNOME_DESKTOP_THUMBNAIL_SIZE_XXLARGE:
+ {
+ return G_FILE_ATTRIBUTE_THUMBNAIL_PATH_XXLARGE;
+ }
+ break;
+
+ default:
+ {
+ return G_FILE_ATTRIBUTE_THUMBNAIL_PATH;
+ }
+ }
+}
+
static GnomeDesktopThumbnailFactory *
get_thumbnail_factory (void)
{
diff --git a/src/nautilus-thumbnails.h b/src/nautilus-thumbnails.h
index 6babe6848..8ff73360c 100644
--- a/src/nautilus-thumbnails.h
+++ b/src/nautilus-thumbnails.h
@@ -21,7 +21,10 @@
#pragma once
+#define GNOME_DESKTOP_USE_UNSTABLE_API
+
#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <libgnome-desktop/gnome-desktop-thumbnail.h>
#include "nautilus-file.h"
/* Returns NULL if there's no thumbnail yet. */
@@ -32,4 +35,6 @@ gboolean nautilus_thumbnail_is_mimetype_limited_by_size
/* Queue handling: */
void nautilus_thumbnail_remove_from_queue (const char *file_uri);
-void nautilus_thumbnail_prioritize (const char *file_uri); \ No newline at end of file
+void nautilus_thumbnail_prioritize (const char *file_uri);
+
+const char* get_thumbnail_path_attribute (void);