diff options
Diffstat (limited to 'src/managers/input/InputManager.cpp')
| -rw-r--r-- | src/managers/input/InputManager.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index 0aad3189..b5d6bb5c 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -1152,17 +1152,16 @@ void CInputManager::destroyKeyboard(SKeyboard* pKeyboard) { xkb_state_unref(pKeyboard->xkbTranslationState); - if (pKeyboard->active) { - m_lKeyboards.remove(*pKeyboard); + m_lKeyboards.remove(*pKeyboard); - if (m_lKeyboards.size() > 0) { - m_pActiveKeyboard = &m_lKeyboards.back(); - m_pActiveKeyboard->active = true; - } else { - m_pActiveKeyboard = nullptr; - } - } else - m_lKeyboards.remove(*pKeyboard); + if (m_lKeyboards.size() > 0) { + m_pActiveKeyboard = &m_lKeyboards.back(); + m_pActiveKeyboard->active = true; + wlr_seat_set_keyboard(g_pCompositor->m_sSeat.seat, wlr_keyboard_from_input_device(m_pActiveKeyboard->keyboard)); + } else { + m_pActiveKeyboard = nullptr; + wlr_seat_set_keyboard(g_pCompositor->m_sSeat.seat, nullptr); + } } void CInputManager::destroyMouse(wlr_input_device* mouse) { |
