[eog] EogPrintPreview: Fix preview thumbnail on HiDPI displays



commit d17e1b2de9c2e68146ef1d9b08570f320ebfd878
Author: Felix Riemann <friemann gnome org>
Date:   Sat Jun 15 13:02:16 2019 +0200

    EogPrintPreview: Fix preview thumbnail on HiDPI displays
    
    Simply scale the preview thumbnail according to the display scale setting.
    That should provide a good looking preview at the correct size.
    Fixes #61.

 src/eog-print-preview.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/src/eog-print-preview.c b/src/eog-print-preview.c
index 3dfbdfe9..be7a88a2 100644
--- a/src/eog-print-preview.c
+++ b/src/eog-print-preview.c
@@ -655,6 +655,7 @@ create_image_scaled (EogPrintPreview *preview)
                        gdouble scale;
                        scale = MIN ((gdouble) allocation.width/i_width,
                                     (gdouble) allocation.height/i_height);
+                       scale *= gtk_widget_get_scale_factor (GTK_WIDGET (priv->area));
                        priv->image_scaled = gdk_pixbuf_scale_simple (priv->image,
                                                                      i_width*scale,
                                                                      i_height*scale,
@@ -670,7 +671,7 @@ static GdkPixbuf *
 create_preview_buffer (EogPrintPreview *preview)
 {
        GdkPixbuf *pixbuf;
-       gint width, height;
+       gint width, height, widget_scale;
        GdkInterpType type = GDK_INTERP_TILES;
 
        if (preview->priv->image == NULL) {
@@ -681,9 +682,12 @@ create_preview_buffer (EogPrintPreview *preview)
 
        width  = gdk_pixbuf_get_width (preview->priv->image);
        height = gdk_pixbuf_get_height (preview->priv->image);
+       widget_scale = gtk_widget_get_scale_factor (GTK_WIDGET (preview->priv->area));
 
-       width   *= preview->priv->i_scale * preview->priv->p_scale;
-       height  *= preview->priv->i_scale * preview->priv->p_scale;
+       width   *= preview->priv->i_scale * preview->priv->p_scale
+               * widget_scale;
+       height  *= preview->priv->i_scale * preview->priv->p_scale
+               * widget_scale;
 
        if (width < 1 || height < 1)
                return NULL;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]