diff options
3 files changed, 10 insertions, 1 deletions
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1.cpp index 345ff32ad..c6e1afabc 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1.cpp @@ -95,9 +95,15 @@ QWaylandXdgToplevelDecorationV1::mode QWaylandXdgToplevelDecorationV1::pending() return m_pending; } +bool QWaylandXdgToplevelDecorationV1::isConfigured() const +{ + return m_configured; +} + void QtWaylandClient::QWaylandXdgToplevelDecorationV1::zxdg_toplevel_decoration_v1_configure(uint32_t mode) { m_pending = zxdg_toplevel_decoration_v1::mode(mode); + m_configured = true; } } diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1_p.h index d6d8ce94e..c3a13ce32 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1_p.h +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1_p.h @@ -80,6 +80,7 @@ public: void requestMode(mode mode); void unsetMode(); mode pending() const; + bool isConfigured() const; protected: void zxdg_toplevel_decoration_v1_configure(uint32_t mode) override; @@ -88,6 +89,7 @@ private: mode m_pending = mode_client_side; mode m_requested = mode_client_side; bool m_modeSet = false; + bool m_configured = false; }; QT_END_NAMESPACE diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp index e4543dba0..ca8da80b7 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp @@ -112,7 +112,8 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() bool QWaylandXdgSurface::Toplevel::wantsDecorations() { - if (m_decoration && m_decoration->pending() == QWaylandXdgToplevelDecorationV1::mode_server_side) + if (m_decoration && (m_decoration->pending() == QWaylandXdgToplevelDecorationV1::mode_server_side + || !m_decoration->isConfigured())) return false; return !(m_pending.states & Qt::WindowFullScreen); |