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.
This commit is contained in:
Matthias Clasen 2019-05-22 23:47:59 +00:00
parent 78c94f9357
commit c7f9f8f63d

View File

@ -271,6 +271,7 @@ gdk_surface_real_move_to_rect (GdkSurface *surface,
GdkRectangle final_rect; GdkRectangle final_rect;
gboolean flipped_x; gboolean flipped_x;
gboolean flipped_y; gboolean flipped_y;
int x, y;
/* This implementation only works for backends that /* This implementation only works for backends that
* can provide root coordinates via get_root_coords. * can provide root coordinates via get_root_coords.
@ -373,6 +374,12 @@ gdk_surface_real_move_to_rect (GdkSurface *surface,
else else
gdk_surface_move (surface, final_rect.x, final_rect.y); 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, g_signal_emit_by_name (surface,
"moved-to-rect", "moved-to-rect",
&flipped_rect, &flipped_rect,