wayland: Move and resize popup after it was configured
A popup may have moved and resized when configured. Make sure every layer knows about this and call gdk_window_move_resize() with the configured dimension and position. This won't actually move the window, but might resize it. https://bugzilla.gnome.org/show_bug.cgi?id=771117
This commit is contained in:
parent
d792400d7c
commit
c529d0a96e
@ -1639,7 +1639,7 @@ translate_to_real_parent_window_geometry (GdkWindow *window,
|
|||||||
*y -= parent->shadow_top;
|
*y -= parent->shadow_top;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static GdkWindow *
|
||||||
translate_from_real_parent_window_geometry (GdkWindow *window,
|
translate_from_real_parent_window_geometry (GdkWindow *window,
|
||||||
gint *x,
|
gint *x,
|
||||||
gint *y)
|
gint *y)
|
||||||
@ -1652,6 +1652,8 @@ translate_from_real_parent_window_geometry (GdkWindow *window,
|
|||||||
|
|
||||||
*x -= dx - parent->shadow_left;
|
*x -= dx - parent->shadow_left;
|
||||||
*y -= dy - parent->shadow_top;
|
*y -= dy - parent->shadow_top;
|
||||||
|
|
||||||
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1836,9 +1838,12 @@ calculate_moved_to_rect_result (GdkWindow *window,
|
|||||||
gboolean *flipped_y)
|
gboolean *flipped_y)
|
||||||
{
|
{
|
||||||
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||||
|
GdkWindow *parent;
|
||||||
|
gint window_x, window_y;
|
||||||
|
gint window_width, window_height;
|
||||||
GdkRectangle best_rect;
|
GdkRectangle best_rect;
|
||||||
|
|
||||||
translate_from_real_parent_window_geometry (window, &x, &y);
|
parent = translate_from_real_parent_window_geometry (window, &x, &y);
|
||||||
*final_rect = (GdkRectangle) {
|
*final_rect = (GdkRectangle) {
|
||||||
.x = x,
|
.x = x,
|
||||||
.y = y,
|
.y = y,
|
||||||
@ -1846,6 +1851,15 @@ calculate_moved_to_rect_result (GdkWindow *window,
|
|||||||
.height = height,
|
.height = height,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
window_x = parent->x + x;
|
||||||
|
window_y = parent->y + y;
|
||||||
|
window_width = width + window->shadow_left + window->shadow_right;
|
||||||
|
window_height = height + window->shadow_top + window->shadow_bottom;
|
||||||
|
|
||||||
|
gdk_window_move_resize (window,
|
||||||
|
window_x, window_y,
|
||||||
|
window_width, window_height);
|
||||||
|
|
||||||
calculate_popup_rect (window,
|
calculate_popup_rect (window,
|
||||||
impl->pending_move_to_rect.rect_anchor,
|
impl->pending_move_to_rect.rect_anchor,
|
||||||
impl->pending_move_to_rect.window_anchor,
|
impl->pending_move_to_rect.window_anchor,
|
||||||
|
Loading…
Reference in New Issue
Block a user