#pragma once #include "../../macros.hpp" #include "../../helpers/math/Math.hpp" #include "../../helpers/signal/Signal.hpp" #include struct wl_client; class CTextInputV1; class CTextInputV3; class CInputMethodV2; class CWLSurfaceResource; class CTextInput { public: CTextInput(WP ti); CTextInput(WP ti); bool isV3(); void enter(SP pSurface); void leave(); void tiV1Destroyed(); wl_client* client(); void commitStateToIME(SP ime); void updateIMEState(SP ime); void onEnabled(SP surfV1 = nullptr); void onDisabled(); void onCommit(); void onReset(); bool hasCursorRectangle(); CBox cursorBox(); SP focusedSurface(); private: void setFocusedSurface(SP pSurface); void initCallbacks(); WP pFocusedSurface; int enterLocks = 0; WP pV3Input; WP pV1Input; struct { CHyprSignalListener enable; CHyprSignalListener disable; CHyprSignalListener reset; CHyprSignalListener commit; CHyprSignalListener destroy; CHyprSignalListener surfaceUnmap; CHyprSignalListener surfaceDestroy; } listeners; };