input: fix active keyboard for seat after destroying one (#5725)

* fix: manage active keyboard for seat after destroying one

* chore: clang-format
This commit is contained in:
drendog 2024-04-24 00:30:35 +02:00 committed by GitHub
parent d119513749
commit 31d055f6d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 10 deletions

View File

@ -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) {