summaryrefslogtreecommitdiff
path: root/src/protocols/ShortcutsInhibit.hpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-04-25 14:32:35 +0100
committerVaxry <vaxry@vaxry.net>2024-04-25 14:32:35 +0100
commit01df3b73d815beaa892849ae7bd4eddc94642dc7 (patch)
tree468929431da9777616ccc7b483260df4060cd301 /src/protocols/ShortcutsInhibit.hpp
parentecf282d331a8aa19c0fe10c739cd31d3b3ab64a2 (diff)
shortcuts-inhibitor: move to new impl
Diffstat (limited to 'src/protocols/ShortcutsInhibit.hpp')
-rw-r--r--src/protocols/ShortcutsInhibit.hpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/protocols/ShortcutsInhibit.hpp b/src/protocols/ShortcutsInhibit.hpp
new file mode 100644
index 00000000..4e06938f
--- /dev/null
+++ b/src/protocols/ShortcutsInhibit.hpp
@@ -0,0 +1,44 @@
+#pragma once
+
+#include <memory>
+#include <vector>
+#include <cstdint>
+#include "WaylandProtocol.hpp"
+#include "keyboard-shortcuts-inhibit-unstable-v1.hpp"
+
+class CKeyboardShortcutsInhibitor {
+ public:
+ CKeyboardShortcutsInhibitor(SP<CZwpKeyboardShortcutsInhibitorV1> resource_, wlr_surface* surf);
+
+ // read-only pointer, may be invalid
+ wlr_surface* surface();
+ bool good();
+
+ private:
+ SP<CZwpKeyboardShortcutsInhibitorV1> resource;
+ wlr_surface* pSurface = nullptr;
+};
+
+class CKeyboardShortcutsInhibitProtocol : public IWaylandProtocol {
+ public:
+ CKeyboardShortcutsInhibitProtocol(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);
+
+ bool isInhibited();
+
+ private:
+ void onManagerResourceDestroy(wl_resource* res);
+ void destroyInhibitor(CKeyboardShortcutsInhibitor* pointer);
+ void onInhibit(CZwpKeyboardShortcutsInhibitManagerV1* pMgr, uint32_t id, wl_resource* surface, wl_resource* seat);
+
+ //
+ std::vector<UP<CZwpKeyboardShortcutsInhibitManagerV1>> m_vManagers;
+ std::vector<UP<CKeyboardShortcutsInhibitor>> m_vInhibitors;
+
+ friend class CKeyboardShortcutsInhibitor;
+};
+
+namespace PROTO {
+ inline UP<CKeyboardShortcutsInhibitProtocol> shortcutsInhibit;
+}; \ No newline at end of file