Check if SDL_GetKeyboardFocus is null in X11/Wayland events

This commit is contained in:
hwsmm
2024-06-26 23:58:00 +09:00
committed by Sam Lantinga
parent 64acde86de
commit dc8b06fb5a
2 changed files with 10 additions and 5 deletions

View File

@@ -381,7 +381,8 @@ int Wayland_WaitEventTimeout(SDL_VideoDevice *_this, Sint64 timeoutNS)
WAYLAND_wl_display_flush(d->display);
#ifdef SDL_USE_IME
if (!d->text_input_manager && SDL_TextInputActive(SDL_GetKeyboardFocus())) {
SDL_Window *keyboard_focus = SDL_GetKeyboardFocus();
if (!d->text_input_manager && keyboard_focus && SDL_TextInputActive(keyboard_focus)) {
SDL_IME_PumpEvents();
}
#endif
@@ -454,7 +455,8 @@ void Wayland_PumpEvents(SDL_VideoDevice *_this)
int err;
#ifdef SDL_USE_IME
if (!d->text_input_manager && SDL_TextInputActive(SDL_GetKeyboardFocus())) {
SDL_Window *keyboard_focus = SDL_GetKeyboardFocus();
if (!d->text_input_manager && keyboard_focus && SDL_TextInputActive(keyboard_focus)) {
SDL_IME_PumpEvents();
}
#endif
@@ -1649,7 +1651,8 @@ static void keyboard_handle_key(void *data, struct wl_keyboard *keyboard,
Wayland_UpdateImplicitGrabSerial(input, serial);
if (state == WL_KEYBOARD_KEY_STATE_PRESSED) {
if (SDL_TextInputActive(SDL_GetKeyboardFocus())) {
SDL_Window *keyboard_focus = SDL_GetKeyboardFocus();
if (keyboard_focus && SDL_TextInputActive(keyboard_focus)) {
has_text = keyboard_input_get_text(text, input, key, SDL_PRESSED, &handled_by_ime);
}
} else {

View File

@@ -2024,7 +2024,8 @@ int X11_WaitEventTimeout(SDL_VideoDevice *_this, Sint64 timeoutNS)
X11_DispatchEvent(_this, &xevent);
#ifdef SDL_USE_IME
if (SDL_TextInputActive(SDL_GetKeyboardFocus())) {
SDL_Window *keyboard_focus = SDL_GetKeyboardFocus();
if (keyboard_focus && SDL_TextInputActive(keyboard_focus)) {
SDL_IME_PumpEvents();
}
#endif
@@ -2084,7 +2085,8 @@ void X11_PumpEvents(SDL_VideoDevice *_this)
}
#ifdef SDL_USE_IME
if (SDL_TextInputActive(SDL_GetKeyboardFocus())) {
SDL_Window *keyboard_focus = SDL_GetKeyboardFocus();
if (keyboard_focus && SDL_TextInputActive(keyboard_focus)) {
SDL_IME_PumpEvents();
}
#endif