diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2022-06-20 10:11:29 +0200 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2022-06-20 10:13:21 +0200 |
commit | 5301a74bd3554612540ef7a59079a78e732644c5 (patch) | |
tree | de7c528bc701deb7d1b3f3684188c61f81610464 | |
parent | 381c34783dcafbfbd58441e709ad0c8b4b30b72e (diff) | |
download | gtk+-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.c | 13 |
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; |