From 103a4ece5f745b677f128f52bd037eafa3351936 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Sun, 19 Nov 2023 00:06:28 +0400 Subject: Client: Switch QWaylandXdgSurface::setSizeHints to the window content geometry According to the protocol documentation, set_{min,max}_size work in window content geometry while it currently works in QWindow geometry. Practically this excludes shadows and includes the non-shadow part of client-side decoration. Pick-to: 6.5 Change-Id: Ib702e4c9036a07645ba254ac3cc0e5704a949fe4 Reviewed-by: David Edmundson (cherry picked from commit 426dab9209bb3509e715dd87a5614b7a17a254b6) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp index f6e3e08a5..be6fad15c 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp @@ -401,10 +401,13 @@ void QWaylandXdgSurface::setWindowGeometry(const QRect &rect) void QWaylandXdgSurface::setSizeHints() { if (m_toplevel && m_window) { - const int minWidth = qMax(0, m_window->windowMinimumSize().width()); - const int minHeight = qMax(0, m_window->windowMinimumSize().height()); - int maxWidth = qMax(0, m_window->windowMaximumSize().width()); - int maxHeight = qMax(0, m_window->windowMaximumSize().height()); + const QMargins margins = m_window->windowContentMargins() - m_window->clientSideMargins(); + const QSize minSize = m_window->windowMinimumSize().shrunkBy(margins); + const QSize maxSize = m_window->windowMaximumSize().shrunkBy(margins); + const int minWidth = qMax(0, minSize.width()); + const int minHeight = qMax(0, minSize.height()); + int maxWidth = qMax(0, maxSize.width()); + int maxHeight = qMax(0, maxSize.height()); if (maxWidth == QWINDOWSIZE_MAX) maxWidth = 0; if (maxHeight == QWINDOWSIZE_MAX) -- cgit v1.2.3