From 2f89957fac615202183e5454a76c7619b117d313 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Wed, 30 Apr 2025 15:24:47 +0200 Subject: [PATCH] use m_interface->desiredSize() validity to decide the direction --- src/interfaces/window.cpp | 2 +- src/qwaylandlayersurface.cpp | 17 ++++++++++------- src/qwaylandlayersurface_p.h | 1 - 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/interfaces/window.cpp b/src/interfaces/window.cpp index ffd5afd..4071977 100644 --- a/src/interfaces/window.cpp +++ b/src/interfaces/window.cpp @@ -32,7 +32,7 @@ public: Window::KeyboardInteractivity keyboardInteractivity = Window::KeyboardInteractivityOnDemand; Window::Layer layer = Window::LayerTop; QMargins margins; - QSize desiredSize; + QSize desiredSize = QSize(0, 0); Window::ScreenConfiguration screenConfiguration = Window::ScreenFromQWindow; bool closeOnDismissed = true; }; diff --git a/src/qwaylandlayersurface.cpp b/src/qwaylandlayersurface.cpp index e5b2bff..382ccbc 100644 --- a/src/qwaylandlayersurface.cpp +++ b/src/qwaylandlayersurface.cpp @@ -44,10 +44,10 @@ QWaylandLayerSurface::QWaylandLayerSurface(QWaylandLayerShellIntegration *shell, setAnchor(m_interface->anchors()); connect(m_interface, &Window::anchorsChanged, this, [this]() { setAnchor(m_interface->anchors()); - if (m_explicitDesiredSize) { - setDesiredSize(m_interface->desiredSize()); - } else { + if (m_interface->desiredSize().isNull()) { setDesiredSize(m_window->windowContentGeometry().size()); + } else { + setDesiredSize(m_interface->desiredSize()); } }); @@ -66,8 +66,9 @@ QWaylandLayerSurface::QWaylandLayerSurface(QWaylandLayerShellIntegration *shell, }); connect(m_interface, &Window::desiredSizeChanged, this, [this]() { - m_explicitDesiredSize = true; - setDesiredSize(m_interface->desiredSize()); + if (!m_interface->desiredSize().isNull()) { + setDesiredSize(m_interface->desiredSize()); + } }); setKeyboardInteractivity(m_interface->keyboardInteractivity()); @@ -75,8 +76,10 @@ QWaylandLayerSurface::QWaylandLayerSurface(QWaylandLayerShellIntegration *shell, setKeyboardInteractivity(m_interface->keyboardInteractivity()); }); - if (!m_explicitDesiredSize) { + if (m_interface->desiredSize().isNull()) { setDesiredSize(window->windowContentGeometry().size()); + } else { + setDesiredSize(m_interface->desiredSize()); } } @@ -185,7 +188,7 @@ void QWaylandLayerSurface::setWindowGeometry(const QRect &geometry) return; } - if (!m_explicitDesiredSize) { + if (m_interface->desiredSize().isNull()) { setDesiredSize(geometry.size()); } } diff --git a/src/qwaylandlayersurface_p.h b/src/qwaylandlayersurface_p.h index 076fa27..079a295 100644 --- a/src/qwaylandlayersurface_p.h +++ b/src/qwaylandlayersurface_p.h @@ -64,7 +64,6 @@ private: QSize m_pendingSize; QString m_activationToken; - bool m_explicitDesiredSize = false; bool m_configured = false; #if QT_VERSION < QT_VERSION_CHECK(6, 9, 0) bool m_configuring = false;