[nautilus/gnome-3-18] desktop-canvas-view: scale desktop workarea



commit e781e9894d53e8a995ba32ccb816536d3b461cba
Author: Andrea Azzarone <azzaronea gmail com>
Date:   Sat Jul 30 17:33:40 2016 +0200

    desktop-canvas-view: scale desktop workarea
    
    The problem is that in the function canvas_container_set_workarea the screen width
    and height are in "application pixels" while the workarea ones are in "device
    pixels" so when the scaling is > 1, the margins are not properly setted.
    
    We need to scale-down the workarea geometries to "application pixels".
    
    https://bugzilla.gnome.org/show_bug.cgi?id=769302

 src/nautilus-desktop-canvas-view.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
---
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index 49224aa..ae320f0 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -85,6 +85,7 @@ canvas_container_set_workarea (NautilusCanvasContainer *canvas_container,
 {
        int left, right, top, bottom;
        int screen_width, screen_height;
+       int scale;
        int i;
 
        left = right = top = bottom = 0;
@@ -92,11 +93,14 @@ canvas_container_set_workarea (NautilusCanvasContainer *canvas_container,
        screen_width  = gdk_screen_get_width (screen);
        screen_height = gdk_screen_get_height (screen);
 
+       scale = gdk_window_get_scale_factor (gdk_screen_get_root_window (screen));
+       scale = scale ? scale : 1;
+
        for (i = 0; i < n_items; i += 4) {
-               int x      = workareas [i];
-               int y      = workareas [i + 1];
-               int width  = workareas [i + 2];
-               int height = workareas [i + 3];
+               int x      = workareas [i] / scale;
+               int y      = workareas [i + 1] / scale;
+               int width  = workareas [i + 2] / scale;
+               int height = workareas [i + 3] / scale;
 
                if ((x + width) > screen_width || (y + height) > screen_height)
                        continue;


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