SDL: Child windows shouldn't take focus if the parent window is in relative mouse mode

From 81e57147f8a2d4d0de8f180b33c30a1a6e3718d1 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 14 Jan 2025 21:09:43 -0800
Subject: [PATCH] Child windows shouldn't take focus if the parent window is in
 relative mouse mode

Fixes https://github.com/libsdl-org/SDL/issues/11807 on Windows
---
 src/video/windows/SDL_windowsevents.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c
index 9360857816d91..18edb76d330d5 100644
--- a/src/video/windows/SDL_windowsevents.c
+++ b/src/video/windows/SDL_windowsevents.c
@@ -1119,6 +1119,16 @@ LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
         if (SDL_WINDOW_IS_POPUP(data->window)) {
             return MA_NOACTIVATE;
         }
+
+        // Check parents to see if they are in relative mouse mode and focused
+        SDL_Window *parent = data->window->parent;
+        while (parent) {
+            if ((parent->flags & SDL_WINDOW_INPUT_FOCUS) &&
+                (parent->flags & SDL_WINDOW_MOUSE_RELATIVE_MODE)) {
+                return MA_NOACTIVATE;
+            }
+            parent = parent->parent;
+        }
     } break;
 
     case WM_SETFOCUS: