#pragma once #include #include #include #include #include #include "wayland-wlr-foreign-toplevel-management-unstable-v1-client-protocol.h" namespace qs::wayland::toplevel_management::impl { class ToplevelHandle; Q_DECLARE_LOGGING_CATEGORY(logToplevelManagement); class ToplevelManager : public QWaylandClientExtensionTemplate , public QtWayland::zwlr_foreign_toplevel_manager_v1 { Q_OBJECT; public: [[nodiscard]] bool available() const; [[nodiscard]] const QVector& readyToplevels() const; [[nodiscard]] ToplevelHandle* handleFor(::zwlr_foreign_toplevel_handle_v1* toplevel); static ToplevelManager* instance(); signals: void toplevelReady(ToplevelHandle* toplevel); protected: explicit ToplevelManager(); void zwlr_foreign_toplevel_manager_v1_toplevel(::zwlr_foreign_toplevel_handle_v1* toplevel ) override; private slots: void onToplevelReady(); void onToplevelClosed(); private: QVector mToplevels; QVector mReadyToplevels; }; } // namespace qs::wayland::toplevel_management::impl