IME: fix crash on restarting IME (#5428)

This commit is contained in:
Sungyoon Cho 2024-04-05 01:34:04 +09:00 committed by GitHub
parent 4f3e90ad2d
commit c4b660a339
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 23 additions and 13 deletions

View file

@ -49,7 +49,7 @@ void CInputMethodRelay::onNewIME(wlr_input_method_v2* pIME) {
Debug::log(LOG, "IME Destroy");
if (PTI)
PTI->enter(PTI->focusedSurface());
PTI->leave();
},
this, "IMERelay");
@ -92,8 +92,18 @@ void CInputMethodRelay::onNewIME(wlr_input_method_v2* pIME) {
},
this, "IMERelay");
if (const auto PTI = getFocusedTextInput(); PTI)
PTI->enter(PTI->focusedSurface());
if (!g_pCompositor->m_pLastFocus)
return;
for (auto& ti : m_vTextInputs) {
if (ti->client() != wl_resource_get_client(g_pCompositor->m_pLastFocus->resource))
continue;
if (ti->isV3())
ti->enter(g_pCompositor->m_pLastFocus);
else
ti->onEnabled(g_pCompositor->m_pLastFocus);
}
}
void CInputMethodRelay::setIMEPopupFocus(CInputPopup* pPopup, wlr_surface* pSurface) {