diff options
author | Ilya Fedin <fedin-ilja2010@ya.ru> | 2023-11-19 00:06:28 +0400 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-11-23 19:14:57 +0000 |
commit | 103a4ece5f745b677f128f52bd037eafa3351936 (patch) | |
tree | ffa7fbe5db2533d92808307e9a07db8d5b786525 | |
parent | d1aac9b071b14e67446eb1506bcb1ac7bc4c322e (diff) |
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 <davidedmundson@kde.org>
(cherry picked from commit 426dab9209bb3509e715dd87a5614b7a17a254b6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 11 |
1 files 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) |