diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-08-05 13:03:37 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-08-05 13:03:37 +0200 |
| commit | 1c4d0e8c18ca0e269dd2019d50a2f1bb7deffd82 (patch) | |
| tree | b7208b2ef623b189c812042825a4915177a2f82f /src/Compositor.cpp | |
| parent | 3947fe9e9f8fb2912b969a20fbbec3f2ab62cef0 (diff) | |
added IME protocol support
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index e32d4caa..b3b7657b 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -153,6 +153,10 @@ CCompositor::CCompositor() { m_sWLRPointerGestures = wlr_pointer_gestures_v1_create(m_sWLDisplay); m_sWLRSession = wlr_backend_get_session(m_sWLRBackend); + + m_sWLRTextInputMgr = wlr_text_input_manager_v3_create(m_sWLDisplay); + + m_sWLRIMEMgr = wlr_input_method_manager_v2_create(m_sWLDisplay); } CCompositor::~CCompositor() { @@ -200,6 +204,9 @@ void CCompositor::initAllSignals() { addWLSignal(&m_sWLRRenderer->events.destroy, &Events::listen_RendererDestroy, m_sWLRRenderer, "WLRRenderer"); addWLSignal(&m_sWLRIdleInhibitMgr->events.new_inhibitor, &Events::listen_newIdleInhibitor, m_sWLRIdleInhibitMgr, "WLRIdleInhibitMgr"); addWLSignal(&m_sWLROutputPowerMgr->events.set_mode, &Events::listen_powerMgrSetMode, m_sWLROutputPowerMgr, "PowerMgr"); + addWLSignal(&m_sWLRIMEMgr->events.input_method, &Events::listen_newIME, m_sWLRIMEMgr, "IMEMgr"); + addWLSignal(&m_sWLRTextInputMgr->events.text_input, &Events::listen_newTextInput, m_sWLRTextInputMgr, "TextInputMgr"); + if (m_sWLRSession) addWLSignal(&m_sWLRSession->events.active, &Events::listen_sessionActive, m_sWLRSession, "Session"); } @@ -665,6 +672,7 @@ void CCompositor::focusSurface(wlr_surface* pSurface, CWindow* pWindowOwner) { if (!pSurface) { wlr_seat_keyboard_clear_focus(m_sSeat.seat); g_pEventManager->postEvent(SHyprIPCEvent{"activewindow", ","}); // unfocused + g_pInputManager->m_sIMERelay.onKeyboardFocus(nullptr); return; } @@ -676,6 +684,8 @@ void CCompositor::focusSurface(wlr_surface* pSurface, CWindow* pWindowOwner) { wlr_seat_keyboard_notify_enter(m_sSeat.seat, pSurface, KEYBOARD->keycodes, KEYBOARD->num_keycodes, &KEYBOARD->modifiers); + g_pInputManager->m_sIMERelay.onKeyboardFocus(pSurface); + wlr_seat_keyboard_focus_change_event event = { .seat = m_sSeat.seat, .old_surface = m_pLastFocus, |
