summaryrefslogtreecommitdiff
path: root/src/managers/input/TextInput.hpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-03-22 23:08:52 +0000
committerVaxry <vaxry@vaxry.net>2024-03-22 23:08:52 +0000
commit9f2ed02f35232f0362db45d5f580025f5724500a (patch)
tree5ae8bc60816353d04ca25c8a58affe63d09efc53 /src/managers/input/TextInput.hpp
parent8c88689faf691a4369528e6d3d52c024cd61125d (diff)
IME/TI: Fixes and refactoring
Fixes #5189
Diffstat (limited to 'src/managers/input/TextInput.hpp')
-rw-r--r--src/managers/input/TextInput.hpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/managers/input/TextInput.hpp b/src/managers/input/TextInput.hpp
new file mode 100644
index 00000000..4acfb960
--- /dev/null
+++ b/src/managers/input/TextInput.hpp
@@ -0,0 +1,51 @@
+#pragma once
+
+#include "../../helpers/WLListener.hpp"
+#include "../../macros.hpp"
+#include "../../helpers/Box.hpp"
+
+struct wlr_text_input_v3;
+struct wlr_surface;
+struct wl_client;
+
+struct STextInputV1;
+
+class CTextInput {
+ public:
+ CTextInput(STextInputV1* ti);
+ CTextInput(wlr_text_input_v3* ti);
+ ~CTextInput();
+
+ bool isV3();
+ void enter(wlr_surface* pSurface);
+ void leave();
+ void tiV1Destroyed();
+ wl_client* client();
+ void commitStateToIME(wlr_input_method_v2* ime);
+ void updateIMEState(wlr_input_method_v2* ime);
+
+ void onEnabled(wlr_surface* surfV1 = nullptr);
+ void onDisabled();
+ void onCommit();
+
+ bool hasCursorRectangle();
+ CBox cursorBox();
+
+ wlr_surface* focusedSurface();
+
+ private:
+ void setFocusedSurface(wlr_surface* pSurface);
+ void initCallbacks();
+
+ wlr_surface* pFocusedSurface = nullptr;
+ int enterLocks = 0;
+ wlr_text_input_v3* pWlrInput = nullptr;
+ STextInputV1* pV1Input = nullptr;
+
+ DYNLISTENER(textInputEnable);
+ DYNLISTENER(textInputDisable);
+ DYNLISTENER(textInputCommit);
+ DYNLISTENER(textInputDestroy);
+ DYNLISTENER(surfaceUnmapped);
+ DYNLISTENER(surfaceDestroyed);
+}; \ No newline at end of file