summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2022-06-20 10:11:29 +0200
committerEmilio Cobos Álvarez <emilio@crisal.io>2022-06-20 10:13:21 +0200
commit5301a74bd3554612540ef7a59079a78e732644c5 (patch)
treede7c528bc701deb7d1b3f3684188c61f81610464
parent381c34783dcafbfbd58441e709ad0c8b4b30b72e (diff)
downloadgtk+-5301a74bd3554612540ef7a59079a78e732644c5.tar.gz
[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).
-rw-r--r--gdk/x11/gdksurface-x11.c13
1 files 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;