#pragma once #include "../../helpers/math/Math.hpp" #include "../../helpers/signal/Signal.hpp" #include "../../helpers/memory/Memory.hpp" 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 m_focusedSurface; int m_enterLocks = 0; WP m_v3Input; WP m_v1Input; struct { CHyprSignalListener enable; CHyprSignalListener disable; CHyprSignalListener reset; CHyprSignalListener commit; CHyprSignalListener destroy; CHyprSignalListener surfaceUnmap; CHyprSignalListener surfaceDestroy; } m_listeners; };