feat: disable text input when window gains focus

This commit is contained in:
Qian23333 2025-06-15 09:47:56 +08:00 committed by Cameron Gutman
commit fb9a164111
3 changed files with 12 additions and 1 deletions

View file

@ -301,6 +301,15 @@ void SdlInputHandler::notifyFocusLost()
// Raise all keys that are currently pressed. If we don't do this, certain keys
// used in shortcuts that cause focus loss (such as Alt+Tab) may get stuck down.
raiseAllKeys();
// Re-enable text input when window loses focus
SDL_StartTextInput();
}
void SdlInputHandler::notifyFocusGained()
{
// Disable text input when window gains focus to prevent IME popup interference
SDL_StopTextInput();
}
bool SdlInputHandler::isCaptureActive()

View file

@ -138,6 +138,8 @@ public:
void notifyFocusLost();
void notifyFocusGained();
bool isCaptureActive();
bool isSystemKeyCaptureActive();

View file

@ -2108,6 +2108,7 @@ void Session::execInternal()
if (m_Preferences->muteOnFocusLoss) {
m_AudioMuted = false;
}
m_InputHandler->notifyFocusGained();
break;
case SDL_WINDOWEVENT_LEAVE:
m_InputHandler->notifyMouseLeave();
@ -2420,4 +2421,3 @@ DispatchDeferredCleanup:
// reference.
QThreadPool::globalInstance()->start(new DeferredSessionCleanupTask(this));
}