From c7f9f8f63d726312a3d2e9d050246fb062a3487b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 22 May 2019 23:47:59 +0000 Subject: [PATCH] surface: Fix the fallback move-to-rect implementation On X11, the final and flipped rects were reporting global coordinates. This was showing up as misplaced popover beaks. --- gdk/gdksurface.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index c48a3b0959..16c3ed5e60 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -271,6 +271,7 @@ gdk_surface_real_move_to_rect (GdkSurface *surface, GdkRectangle final_rect; gboolean flipped_x; gboolean flipped_y; + int x, y; /* This implementation only works for backends that * can provide root coordinates via get_root_coords. @@ -373,6 +374,12 @@ gdk_surface_real_move_to_rect (GdkSurface *surface, else gdk_surface_move (surface, final_rect.x, final_rect.y); + gdk_surface_get_origin (toplevel, &x, &y); + final_rect.x -= x; + final_rect.y -= y; + flipped_rect.x -= x; + flipped_rect.y -= y; + g_signal_emit_by_name (surface, "moved-to-rect", &flipped_rect,