summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1.cpp6
-rw-r--r--src/plugins/shellintegration/xdg-shell/qwaylandxdgdecorationv1_p.h2
-rw-r--r--src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp3
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);