Просмотр исходного кода

events: Raise keyboard keys before sending the focus lost message

Otherwise, the key raises may end up being ignored.
Frank Praznik 1 месяц назад
Родитель
Сommit
e62d6a95b9
1 измененных файлов с 5 добавлено и 3 удалено
  1. 5 3
      src/events/SDL_keyboard.c

+ 5 - 3
src/events/SDL_keyboard.c

@@ -337,6 +337,11 @@ bool SDL_SetKeyboardFocus(SDL_Window *window)
         }
     }
 
+    if (keyboard->focus && !window) {
+        // We won't get anymore keyboard messages, so reset keyboard state
+        SDL_ResetKeyboard();
+    }
+
     // See if the current window has lost focus
     if (keyboard->focus && keyboard->focus != window) {
         SDL_SendWindowEvent(keyboard->focus, SDL_EVENT_WINDOW_FOCUS_LOST, 0, 0);
@@ -352,9 +357,6 @@ bool SDL_SetKeyboardFocus(SDL_Window *window)
     }
 
     if (keyboard->focus && !window) {
-        // We won't get anymore keyboard messages, so reset keyboard state
-        SDL_ResetKeyboard();
-
         // Also leave mouse relative mode
         if (mouse->relative_mode) {
             SDL_SetRelativeMouseMode(false);