From 1956a6ae76ae487fab25eec35ea30b9e483fe528 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Mon, 26 Sep 2016 17:09:52 +0200 Subject: [PATCH] window: Use the target rect for the grab anchor position on unmaximize A window's unconstrained_rect is essentially just the target rectangle we hand to meta_window_move_resize_internal() except it's not updated until the window actually moves or resizes. As such, for wayland client resizes, since they're async, using window->unconstrained_rect right after calling move_resize_internal() to update the grab anchor position on unmaximize doesn't work as it does for X clients. To fix this, we can just use the target rectangle for the grab anchor. Note that comment here was already wrong since it says we should be taking constraints into account and yet the code used the unconstrained rect anyway. https://bugzilla.gnome.org/show_bug.cgi?id=770345 --- src/core/window.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/core/window.c b/src/core/window.c index 6cef63515..21557f363 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -3106,14 +3106,12 @@ meta_window_unmaximize (MetaWindow *window, /* When we unmaximize, if we're doing a mouse move also we could * get the window suddenly jumping to the upper left corner of * the workspace, since that's where it was when the grab op - * started. So we need to update the grab state. We have to do - * it after the actual operation, as the window may have been moved - * by constraints. + * started. So we need to update the grab anchor position. */ if (meta_grab_op_is_moving (window->display->grab_op) && window->display->grab_window == window) { - window->display->grab_anchor_window_pos = window->unconstrained_rect; + window->display->grab_anchor_window_pos = target_rect; } meta_window_recalc_features (window);