summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntónio Fernandes <antoniof@gnome.org>2022-08-08 00:23:22 +0100
committerAntónio Fernandes <antoniof@gnome.org>2022-09-01 12:23:06 +0100
commita9b139566221f65cfcd6833ca1622512c7c8f62d (patch)
tree8e3457a74d00bb3524cce4258d0f2f79d54e533b
parent86b8a4371067b1ef53539b1b60d1f158a6071831 (diff)
downloadnautilus-a9b139566221f65cfcd6833ca1622512c7c8f62d.tar.gz
general: Support HiDPI icons again
This brings back a feature originally introduced by commit 0d4555d76f86ba2d49f48836b7eea11f1adfb2fd Back then, it used gdk_cairo_surface_create_from_pixbuf() to apply the scaling factor, but in GTK 4 we can no longer consume cairo surfaces directly. Instead, we are to use paintables. For themed icons we already use GtkIconPaintable, which just works.
-rw-r--r--src/nautilus-grid-cell.c4
-rw-r--r--src/nautilus-name-cell.c4
-rw-r--r--src/nautilus-properties-window.c2
3 files changed, 6 insertions, 4 deletions
diff --git a/src/nautilus-grid-cell.c b/src/nautilus-grid-cell.c
index 2e7538d76..bf19a36a1 100644
--- a/src/nautilus-grid-cell.c
+++ b/src/nautilus-grid-cell.c
@@ -34,15 +34,17 @@ update_icon (NautilusGridCell *self)
GtkStyleContext *style_context;
NautilusFile *file;
guint icon_size;
+ gint scale_factor;
g_autofree gchar *thumbnail_path = NULL;
item = nautilus_view_cell_get_item (NAUTILUS_VIEW_CELL (self));
g_return_if_fail (item != NULL);
file = nautilus_view_item_get_file (item);
icon_size = nautilus_view_item_get_icon_size (item);
+ scale_factor = gtk_widget_get_scale_factor (GTK_WIDGET (self));
flags = NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS;
- icon_paintable = nautilus_file_get_icon_paintable (file, icon_size, 1, flags);
+ icon_paintable = nautilus_file_get_icon_paintable (file, icon_size, scale_factor, flags);
gtk_picture_set_paintable (GTK_PICTURE (self->icon), icon_paintable);
/* Set the same height and width for all icons regardless of aspect ratio.
diff --git a/src/nautilus-name-cell.c b/src/nautilus-name-cell.c
index bab99561b..a58415f9e 100644
--- a/src/nautilus-name-cell.c
+++ b/src/nautilus-name-cell.c
@@ -128,6 +128,7 @@ update_icon (NautilusNameCell *self)
NautilusViewItem *item;
NautilusFile *file;
guint icon_size;
+ gint scale_factor;
int icon_height;
int extra_margin;
g_autofree gchar *thumbnail_path = NULL;
@@ -137,9 +138,10 @@ update_icon (NautilusNameCell *self)
file = nautilus_view_item_get_file (item);
icon_size = nautilus_view_item_get_icon_size (item);
+ scale_factor = gtk_widget_get_scale_factor (GTK_WIDGET (self));
flags = NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS;
- icon_paintable = nautilus_file_get_icon_paintable (file, icon_size, 1, flags);
+ icon_paintable = nautilus_file_get_icon_paintable (file, icon_size, scale_factor, flags);
gtk_picture_set_paintable (GTK_PICTURE (self->icon), icon_paintable);
/* Set the same width for all icons regardless of aspect ratio.
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index cfa500259..a2d5cc206 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -564,8 +564,6 @@ get_image_for_properties_window (NautilusPropertiesWindow *self,
gint icon_scale;
icon_scale = gtk_widget_get_scale_factor (GTK_WIDGET (self));
- /* FIXME: Temporary regression: HiDPI icons not supported, ignore scale. */
- icon_scale = 1;
for (l = self->original_files; l != NULL; l = l->next)
{