diff --git a/shell_client.cpp b/shell_client.cpp index 71a18349c9..282af776ae 100644 --- a/shell_client.cpp +++ b/shell_client.cpp @@ -228,8 +228,12 @@ void ShellClient::init() connect(s, &SurfaceInterface::destroyed, this, &ShellClient::destroyClient); if (m_shellSurface) { initSurface(m_shellSurface); - // TODO: verify grab serial - m_hasPopupGrab = m_shellSurface->isPopup(); + auto setPopup = [this] { + // TODO: verify grab serial + m_hasPopupGrab = m_shellSurface->isPopup(); + }; + connect(m_shellSurface, &ShellSurfaceInterface::popupChanged, this, setPopup); + setPopup(); } else if (m_xdgShellSurface) { initSurface(m_xdgShellSurface);