diff --git a/src/qwaylandlayersurface.cpp b/src/qwaylandlayersurface.cpp index bc70445..d26930f 100644 --- a/src/qwaylandlayersurface.cpp +++ b/src/qwaylandlayersurface.cpp @@ -98,6 +98,19 @@ void QWaylandLayerSurface::zwlr_layer_surface_v1_configure(uint32_t serial, uint } } +void QWaylandLayerSurface::attachPopup(QWaylandShellSurface *popup) +{ + std::any anyRole = popup->surfaceRole(); + + if (auto role = std::any_cast<::xdg_popup *>(&anyRole)) { + get_popup(*role); + } else { + qCWarning(LAYERSHELLQT) << "Cannot attach popup of unknown type"; + } + + QWaylandShellSurface::attachPopup(popup); +} + void QWaylandLayerSurface::applyConfigure() { window()->resizeFromApplyConfigure(m_pendingSize); diff --git a/src/qwaylandlayersurface_p.h b/src/qwaylandlayersurface_p.h index 6a59d62..f8ddd82 100644 --- a/src/qwaylandlayersurface_p.h +++ b/src/qwaylandlayersurface_p.h @@ -36,6 +36,7 @@ public: void setKeyboardInteractivity(uint32_t interactivity); void setLayer(uint32_t layer); + void attachPopup(QWaylandShellSurface *popup) override; void applyConfigure() override; private: