diff options
author | António Fernandes <antoniof@gnome.org> | 2022-09-01 12:15:36 +0100 |
---|---|---|
committer | António Fernandes <antoniof@gnome.org> | 2022-09-01 12:23:06 +0100 |
commit | 278435e3c20244b48986c6cd8b72c5317668c72d (patch) | |
tree | 9dc3b78f16d7e7a27d0b2a741f8ae9395cdf1b12 | |
parent | bf2b63569dffb5738514e471281e926ab1684790 (diff) | |
download | nautilus-278435e3c20244b48986c6cd8b72c5317668c72d.tar.gz |
thumbnails: Create larger thumbnails for higher density displays
-rw-r--r-- | src/nautilus-thumbnails.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/nautilus-thumbnails.c b/src/nautilus-thumbnails.c index 1bad311e1..790b4e36f 100644 --- a/src/nautilus-thumbnails.c +++ b/src/nautilus-thumbnails.c @@ -137,7 +137,32 @@ get_thumbnail_factory (void) if (thumbnail_factory == NULL) { - thumbnail_factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE); + GdkDisplay *display = gdk_display_get_default (); + GListModel *monitors = gdk_display_get_monitors (display); + gint max_scale = 1; + GnomeDesktopThumbnailSize size; + + for (guint i = 0; i < g_list_model_get_n_items (monitors); i++) + { + g_autoptr (GdkMonitor) monitor = g_list_model_get_item (monitors, i); + + max_scale = MAX (max_scale, gdk_monitor_get_scale_factor (monitor)); + } + + if (max_scale <= 1) + { + size = GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE; + } + else if (max_scale <= 2) + { + size = GNOME_DESKTOP_THUMBNAIL_SIZE_XLARGE; + } + else + { + size = GNOME_DESKTOP_THUMBNAIL_SIZE_XXLARGE; + } + + thumbnail_factory = gnome_desktop_thumbnail_factory_new (size); } return thumbnail_factory; |