summaryrefslogtreecommitdiff
path: root/src/managers/input/InputMethodPopup.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/managers/input/InputMethodPopup.hpp')
-rw-r--r--src/managers/input/InputMethodPopup.hpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/managers/input/InputMethodPopup.hpp b/src/managers/input/InputMethodPopup.hpp
new file mode 100644
index 00000000..8bcf1101
--- /dev/null
+++ b/src/managers/input/InputMethodPopup.hpp
@@ -0,0 +1,41 @@
+#pragma once
+
+#include "../../helpers/WLListener.hpp"
+#include "../../desktop/WLSurface.hpp"
+#include "../../macros.hpp"
+#include "../../helpers/Box.hpp"
+
+struct wlr_input_popup_surface_v2;
+
+class CInputPopup {
+ public:
+ CInputPopup(wlr_input_popup_surface_v2* surf);
+
+ void onDestroy();
+ void onMap();
+ void onUnmap();
+ void onCommit();
+
+ void damageEntire();
+ void damageSurface();
+
+ bool isVecInPopup(const Vector2D& point);
+
+ CBox globalBox();
+ wlr_surface* getWlrSurface();
+
+ private:
+ void initCallbacks();
+ CWLSurface* queryOwner();
+ void updateBox();
+
+ wlr_input_popup_surface_v2* pWlr = nullptr;
+ CWLSurface surface;
+ CBox lastBoxLocal;
+ uint64_t lastMonitor = -1;
+
+ DYNLISTENER(mapPopup);
+ DYNLISTENER(unmapPopup);
+ DYNLISTENER(destroyPopup);
+ DYNLISTENER(commitPopup);
+}; \ No newline at end of file