Commit 2248a549375b5cbe5d04a9792baca9d7b780afaf

Sam Lantinga 2021-11-05T22:48:46

Update the focus in case we changed focus to a child window and then away from the application In this case we'll get WM_KILLFOCUS when the child window is focused, but we'll retain focus on the top level window, but when we Alt-Tab away, we won't get another WM_KILLFOCUS or WM_NCACTIVATE, we get WM_ACTIVATE instead, so we need to check for focus updates in response to that as well.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c
index 24765fd..d5ffaec 100644
--- a/src/video/windows/SDL_windowsevents.c
+++ b/src/video/windows/SDL_windowsevents.c
@@ -685,13 +685,15 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
     case WM_ACTIVATE:
         {
+            /* Update the focus in case we changed focus to a child window and then away from the application */
+            WIN_UpdateFocus(data->window);
         }
         break;
 
     case WM_SETFOCUS:
     case WM_KILLFOCUS:
         {
-            /* Update the focus in case it's changing between windows in the same application */
+            /* Update the focus in case it's changing between top-level windows in the same application */
             WIN_UpdateFocus(data->window);
         }
         break;