window-wayland: Don't use grab op for some other window when resizing

When resizing a window interactively, we'll set a grab operation and a
grab window, among other things. If we're resizing (including setting
initial size, i.e. mapping) another window, that didn't change position,
don't use the gravity of the grab operation when resizing our own
window.

This fixes an issue with jumpy popup position when moving a previously
mapped gtk popover.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/999
This commit is contained in:
Jonas Ådahl 2020-01-09 17:55:56 +01:00
parent a68e6972a2
commit ac01e69a67

View File

@ -976,7 +976,10 @@ meta_window_wayland_finish_move_resize (MetaWindow *window,
if (rect.width != window->rect.width || rect.height != window->rect.height) if (rect.width != window->rect.width || rect.height != window->rect.height)
flags |= META_MOVE_RESIZE_RESIZE_ACTION; flags |= META_MOVE_RESIZE_RESIZE_ACTION;
if (window->display->grab_window == window)
gravity = meta_resize_gravity_from_grab_op (window->display->grab_op); gravity = meta_resize_gravity_from_grab_op (window->display->grab_op);
else
gravity = META_GRAVITY_STATIC;
meta_window_move_resize_internal (window, flags, gravity, rect); meta_window_move_resize_internal (window, flags, gravity, rect);
g_clear_pointer (&acked_configuration, meta_wayland_window_configuration_free); g_clear_pointer (&acked_configuration, meta_wayland_window_configuration_free);