summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Fedin <fedin-ilja2010@ya.ru>2023-11-19 00:06:28 +0400
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-11-23 19:14:57 +0000
commit103a4ece5f745b677f128f52bd037eafa3351936 (patch)
treeffa7fbe5db2533d92808307e9a07db8d5b786525
parentd1aac9b071b14e67446eb1506bcb1ac7bc4c322e (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.cpp11
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)