mirror of
https://github.com/brl/mutter.git
synced 2024-12-25 20:32:16 +00:00
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:
parent
06ca99c3a3
commit
57bb297450
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user