mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-03 17:21:11 +00:00
wayland: Use helper to translate to real parent window geometry
Use a helper to translate a coordinate from non-real GdkWindow parent to window geometry coordinate space of the real GdkWindow parent, meaning the coordinate space of the GdkWindow of the parent used as a xdg_popup parent where (0, 0) is inside of the shadow margin. https://bugzilla.gnome.org/show_bug.cgi?id=771117
This commit is contained in:
parent
bc6630bb7d
commit
74d237df41
@ -1626,6 +1626,19 @@ get_real_parent_and_translate (GdkWindow *window,
|
||||
return parent;
|
||||
}
|
||||
|
||||
static void
|
||||
translate_to_real_parent_window_geometry (GdkWindow *window,
|
||||
gint *x,
|
||||
gint *y)
|
||||
{
|
||||
GdkWindow *parent;
|
||||
|
||||
parent = get_real_parent_and_translate (window, x, y);
|
||||
|
||||
*x -= parent->shadow_left;
|
||||
*y -= parent->shadow_top;
|
||||
}
|
||||
|
||||
static void
|
||||
calculate_popup_rect (GdkWindow *window,
|
||||
GdkGravity rect_anchor,
|
||||
@ -1879,7 +1892,6 @@ create_dynamic_positioner (GdkWindow *window)
|
||||
GdkWaylandDisplay *display =
|
||||
GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
|
||||
struct zxdg_positioner_v6 *positioner;
|
||||
GdkWindow *parent;
|
||||
GdkRectangle geometry;
|
||||
enum zxdg_positioner_v6_anchor anchor;
|
||||
enum zxdg_positioner_v6_anchor gravity;
|
||||
@ -1894,15 +1906,15 @@ create_dynamic_positioner (GdkWindow *window)
|
||||
|
||||
real_anchor_rect_x = impl->pending_move_to_rect.rect.x;
|
||||
real_anchor_rect_y = impl->pending_move_to_rect.rect.y;
|
||||
parent = get_real_parent_and_translate (window,
|
||||
&real_anchor_rect_x,
|
||||
&real_anchor_rect_y);
|
||||
translate_to_real_parent_window_geometry (window,
|
||||
&real_anchor_rect_x,
|
||||
&real_anchor_rect_y);
|
||||
|
||||
anchor_rect_width = impl->pending_move_to_rect.rect.width;
|
||||
anchor_rect_height = impl->pending_move_to_rect.rect.height;
|
||||
zxdg_positioner_v6_set_anchor_rect (positioner,
|
||||
real_anchor_rect_x - parent->shadow_left,
|
||||
real_anchor_rect_y - parent->shadow_top,
|
||||
real_anchor_rect_x,
|
||||
real_anchor_rect_y,
|
||||
anchor_rect_width,
|
||||
anchor_rect_height);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user