window: Fix size hints with CSD

Commit 03c69ed8 ("Do not go past size hints on resize") was meant to
ensure the size hints set by the client would be honored during resize,
as going past those values could cause the window to move on resize.

However, it did so by calling ensure_size_hints_satisfied() which works
with the frame rect rather than the client rect. As a result, the
minimum size enforced would end up being larger than expected with
client-side decorations.

Use meta_window_maybe_apply_size_hints() instead which automatically
adjusts for client size.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1542
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1594>
This commit is contained in:
Olivier Fourdan 2020-11-23 10:07:45 +01:00
parent 3843293e40
commit 27131198c7

View File

@ -6322,7 +6322,7 @@ update_resize (MetaWindow *window,
else if (window->display->grab_op & META_GRAB_OP_WINDOW_DIR_NORTH)
new_rect.height -= dy;
ensure_size_hints_satisfied (&new_rect, &window->size_hints);
meta_window_maybe_apply_size_hints (window, &new_rect);
/* If we're waiting for a request for _NET_WM_SYNC_REQUEST, we'll
* resize the window when the window responds, or when we time