summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-08-05 13:03:37 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-08-05 13:03:37 +0200
commit1c4d0e8c18ca0e269dd2019d50a2f1bb7deffd82 (patch)
treeb7208b2ef623b189c812042825a4915177a2f82f /src/Compositor.cpp
parent3947fe9e9f8fb2912b969a20fbbec3f2ab62cef0 (diff)
added IME protocol support
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp10
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,