diff --git a/shell_client.cpp b/shell_client.cpp --- a/shell_client.cpp +++ b/shell_client.cpp @@ -1544,8 +1544,6 @@ connect(m_serverDecoration, &ServerSideDecorationInterface::modeRequested, this, [this] (ServerSideDecorationManagerInterface::Mode mode) { const bool changed = mode != m_serverDecoration->mode(); - // always acknowledge the requested mode - m_serverDecoration->setMode(mode); if (changed && !m_unmapped) { updateDecoration(false); } diff --git a/wayland_server.cpp b/wayland_server.cpp --- a/wayland_server.cpp +++ b/wayland_server.cpp @@ -337,6 +337,12 @@ if (ShellClient *c = findClient(deco->surface())) { c->installServerSideDecoration(deco); } + connect(deco, &ServerSideDecorationInterface::modeRequested, this, + [this, deco] (ServerSideDecorationManagerInterface::Mode mode) { + // always acknowledge the requested mode + deco->setMode(mode); + } + ); } ); m_decorationManager->create();