From fc9b2478d86daa789918e28c4978400983fdbe68 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 15 Jan 2025 10:51:12 -0800 Subject: [PATCH] windows: don't set focus click pending if SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH is set Fixes https://github.com/libsdl-org/SDL/issues/11976 --- src/video/windows/SDL_windowsevents.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 60ccac8ebe..4d4df9e940 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -241,9 +241,7 @@ static void WIN_CheckWParamMouseButton(Uint64 timestamp, bool bwParamMousePresse data->focus_click_pending &= ~SDL_BUTTON_MASK(button); WIN_UpdateClipCursor(data->window); } - if (WIN_ShouldIgnoreFocusClick(data)) { - return; - } + return; } if (bwParamMousePressed && !(mouseFlags & SDL_BUTTON_MASK(button))) { @@ -323,7 +321,7 @@ static void WIN_UpdateFocus(SDL_Window *window, bool expect_focus) if (has_focus) { POINT cursorPos; - if (!(window->flags & SDL_WINDOW_MOUSE_CAPTURE)) { + if (WIN_ShouldIgnoreFocusClick(data) && !(window->flags & SDL_WINDOW_MOUSE_CAPTURE)) { bool swapButtons = GetSystemMetrics(SM_SWAPBUTTON) != 0; if (GetAsyncKeyState(VK_LBUTTON)) { data->focus_click_pending |= !swapButtons ? SDL_BUTTON_LMASK : SDL_BUTTON_RMASK; @@ -676,9 +674,7 @@ static void WIN_HandleRawMouseInput(Uint64 timestamp, SDL_VideoData *data, HANDL windowdata->focus_click_pending &= ~SDL_BUTTON_MASK(button); WIN_UpdateClipCursor(window); } - if (WIN_ShouldIgnoreFocusClick(windowdata)) { - continue; - } + continue; } SDL_SendMouseButton(timestamp, window, mouseID, button, down);