[gtk: 1/2] [x11] Fix coordinate space of rect in gdk_x11_surface_get_frame_extents when called on popups.




commit 5301a74bd3554612540ef7a59079a78e732644c5
Author: Emilio Cobos Álvarez <emilio crisal io>
Date:   Mon Jun 20 10:11:29 2022 +0200

    [x11] Fix coordinate space of rect in gdk_x11_surface_get_frame_extents when called on popups.
    
    If we take the early return we don't unscale this at the bottom of the
    function, causing wrong coordinates in HiDPI screens.
    
    This bug also affects GTK3 (I noticed this running Firefox tests on X).

 gdk/x11/gdksurface-x11.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
---
diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c
index fb3b0bd7df..e21ba9b5b6 100644
--- a/gdk/x11/gdksurface-x11.c
+++ b/gdk/x11/gdksurface-x11.c
@@ -2793,14 +2793,19 @@ gdk_x11_surface_get_frame_extents (GdkSurface    *surface,
   impl = GDK_X11_SURFACE (surface);
 
   /* Refine our fallback answer a bit using local information */
-  rect->x = impl->abs_x * impl->surface_scale;
-  rect->y = impl->abs_y * impl->surface_scale;
-  rect->width = surface->width * impl->surface_scale;
-  rect->height = surface->height * impl->surface_scale;
+  rect->x = impl->abs_x;
+  rect->y = impl->abs_y;
+  rect->width = surface->width;
+  rect->height = surface->height;
 
   if (GDK_SURFACE_DESTROYED (surface) || impl->override_redirect)
     return;
 
+  rect->x *= impl->surface_scale;
+  rect->y *= impl->surface_scale;
+  rect->width *= impl->surface_scale;
+  rect->height *= impl->surface_scale;
+
   nvroots = 0;
   vroots = NULL;
 


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