window-wayland: Fix interactive resizing from the top/left once more

Ugh. So in the fullscreen case, we need to make sure to specify that
it's a MOVE_ACTION so that we move to the saved position, but we
can't do that in the resizing case since we need to use the resized
rectangle.

The flags are really hurting us here. Perhaps we should make it the
client's responsibility to specify a complete rectangle which we
could resize to; then the weird-o logic would be self-contained in
each front-end.

I'm not convinced this covers all cases, especially when we could have
a dangling weird state pointer, but it fixes our existing two testcases.
This commit is contained in:
Jasper St. Pierre 2014-05-01 18:55:34 -04:00
parent 06ca99c3a3
commit 57bb297450

View File

@ -222,21 +222,21 @@ meta_window_wayland_move_resize (MetaWindow *window,
flags = META_IS_WAYLAND_RESIZE; flags = META_IS_WAYLAND_RESIZE;
if (wl_window->has_saved_pos) /* x/y are ignored when we're doing interactive resizing */
{
x = wl_window->saved_x;
y = wl_window->saved_y;
wl_window->has_saved_pos = FALSE;
flags |= META_IS_MOVE_ACTION;
}
else
{
meta_window_get_position (window, &x, &y);
}
/* dx/dy are ignored during resizing */
if (!meta_grab_op_is_resizing (window->display->grab_op)) if (!meta_grab_op_is_resizing (window->display->grab_op))
{ {
if (wl_window->has_saved_pos)
{
x = wl_window->saved_x;
y = wl_window->saved_y;
wl_window->has_saved_pos = FALSE;
flags |= META_IS_MOVE_ACTION;
}
else
{
meta_window_get_position (window, &x, &y);
}
if (dx != 0 || dy != 0) if (dx != 0 || dy != 0)
{ {
x += dx; x += dx;