summaryrefslogtreecommitdiff
path: root/src/protocols/ToplevelMapping.hpp
diff options
context:
space:
mode:
authorWhySoBad <49595640+WhySoBad@users.noreply.github.com>2025-04-24 18:10:57 +0200
committerGitHub <noreply@github.com>2025-04-24 18:10:57 +0200
commita9549dbca060b65ae6ec50f9bc68cdf1823d6cbe (patch)
treec39e84cbaa51ce4ca04d13d0dfdc6998f5efbf9a /src/protocols/ToplevelMapping.hpp
parentb06fbdb7431aa2b6653d788ad9fb758478c72d4c (diff)
protocols: add Hyprland toplevel mapping implementation (#9775)
Diffstat (limited to 'src/protocols/ToplevelMapping.hpp')
-rw-r--r--src/protocols/ToplevelMapping.hpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/protocols/ToplevelMapping.hpp b/src/protocols/ToplevelMapping.hpp
new file mode 100644
index 00000000..ffe94b14
--- /dev/null
+++ b/src/protocols/ToplevelMapping.hpp
@@ -0,0 +1,46 @@
+#pragma once
+
+#include <vector>
+#include "WaylandProtocol.hpp"
+#include "hyprland-toplevel-mapping-v1.hpp"
+
+class CToplevelWindowMappingHandle {
+ public:
+ CToplevelWindowMappingHandle(SP<CHyprlandToplevelWindowMappingHandleV1> resource_);
+
+ private:
+ SP<CHyprlandToplevelWindowMappingHandleV1> resource;
+
+ friend class CToplevelMappingManager;
+ friend class CToplevelMappingProtocol;
+};
+
+class CToplevelMappingManager {
+ public:
+ CToplevelMappingManager(SP<CHyprlandToplevelMappingManagerV1> resource_);
+
+ bool good() const;
+
+ private:
+ SP<CHyprlandToplevelMappingManagerV1> resource;
+};
+
+class CToplevelMappingProtocol : IWaylandProtocol {
+ public:
+ CToplevelMappingProtocol(const wl_interface* iface, const int& ver, const std::string& name);
+
+ virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id);
+
+ private:
+ void onManagerResourceDestroy(CToplevelMappingManager* mgr);
+ void destroyHandle(CHyprlandToplevelWindowMappingHandleV1* handle);
+
+ std::vector<UP<CToplevelMappingManager>> m_vManagers;
+ std::vector<SP<CToplevelWindowMappingHandle>> m_vHandles;
+
+ friend class CToplevelMappingManager;
+};
+
+namespace PROTO {
+ inline UP<CToplevelMappingProtocol> toplevelMapping;
+}; \ No newline at end of file