mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 07:05:58 +01:00
tiv1: minor fixes for crashes
This commit is contained in:
parent
5dc1a5fec6
commit
0807b8b95f
3 changed files with 9 additions and 1 deletions
|
@ -371,7 +371,7 @@ void CInputMethodRelay::createNewTextInput(wlr_text_input_v3* pInput, STextInput
|
|||
return;
|
||||
}
|
||||
|
||||
if (!PINPUT->pWlrInput->current_enabled) {
|
||||
if (!(PINPUT->pWlrInput ? PINPUT->pWlrInput->current_enabled : PINPUT->pV1Input->active)) {
|
||||
Debug::log(WARN, "Disabled TextInput commit?");
|
||||
return;
|
||||
}
|
||||
|
@ -486,6 +486,7 @@ void CInputMethodRelay::onKeyboardFocus(wlr_surface* pSurface) {
|
|||
else {
|
||||
zwp_text_input_v1_send_leave(ti.pV1Input->resourceImpl);
|
||||
ti.pV1Input->focusedSurface = nullptr;
|
||||
ti.pV1Input->active = false;
|
||||
}
|
||||
} else {
|
||||
continue;
|
||||
|
@ -500,6 +501,7 @@ void CInputMethodRelay::onKeyboardFocus(wlr_surface* pSurface) {
|
|||
else {
|
||||
zwp_text_input_v1_send_enter(ti.pV1Input->resourceImpl, pSurface->resource);
|
||||
ti.pV1Input->focusedSurface = pSurface;
|
||||
ti.pV1Input->active = true;
|
||||
}
|
||||
} else {
|
||||
setPendingSurface(&ti, pSurface);
|
||||
|
|
|
@ -113,6 +113,8 @@ void CTextInputV1ProtocolManager::removeTI(STextInputV1* pTI) {
|
|||
// if ((*TI)->resourceImpl)
|
||||
// wl_resource_destroy((*TI)->resourceImpl);
|
||||
|
||||
g_pInputManager->m_sIMERelay.removeTextInput((*TI)->pTextInput);
|
||||
|
||||
std::erase_if(m_pClients, [&](const auto& other) { return other.get() == pTI; });
|
||||
}
|
||||
|
||||
|
@ -131,6 +133,8 @@ static void destroyTI(wl_resource* resource) {
|
|||
wl_resource_set_user_data(resource, nullptr);
|
||||
}
|
||||
|
||||
g_pInputManager->m_sIMERelay.removeTextInput(TI->pTextInput);
|
||||
|
||||
TI->pTextInput->hyprListener_textInputDestroy.emit(nullptr);
|
||||
|
||||
g_pProtocolManager->m_pTextInputV1ProtocolManager->removeTI(TI);
|
||||
|
|
|
@ -24,6 +24,8 @@ struct STextInputV1 {
|
|||
|
||||
uint32_t serial = 0;
|
||||
|
||||
bool active = false;
|
||||
|
||||
struct SPendingSurr {
|
||||
bool isPending = false;
|
||||
std::string text = "";
|
||||
|
|
Loading…
Reference in a new issue