diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-03-22 23:08:52 +0000 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-03-22 23:08:52 +0000 |
| commit | 9f2ed02f35232f0362db45d5f580025f5724500a (patch) | |
| tree | 5ae8bc60816353d04ca25c8a58affe63d09efc53 /src/managers/input/TextInput.hpp | |
| parent | 8c88689faf691a4369528e6d3d52c024cd61125d (diff) | |
IME/TI: Fixes and refactoring
Fixes #5189
Diffstat (limited to 'src/managers/input/TextInput.hpp')
| -rw-r--r-- | src/managers/input/TextInput.hpp | 51 |
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 |
