mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-02 15:47:31 +08:00
Don't treat mouse buttons as focus clicks if the window has mouse capture
This fixes the following sequence: * Press mouse button down * Alt-tab away from the window * Alt-tab back to the window * Release mouse button Fixes https://github.com/libsdl-org/SDL/issues/7747
This commit is contained in:
@@ -308,21 +308,23 @@ static void WIN_UpdateFocus(SDL_Window *window, bool expect_focus)
|
|||||||
if (has_focus) {
|
if (has_focus) {
|
||||||
POINT cursorPos;
|
POINT cursorPos;
|
||||||
|
|
||||||
bool swapButtons = GetSystemMetrics(SM_SWAPBUTTON) != 0;
|
if (!(window->flags & SDL_WINDOW_MOUSE_CAPTURE)) {
|
||||||
if (GetAsyncKeyState(VK_LBUTTON)) {
|
bool swapButtons = GetSystemMetrics(SM_SWAPBUTTON) != 0;
|
||||||
data->focus_click_pending |= !swapButtons ? SDL_BUTTON_LMASK : SDL_BUTTON_RMASK;
|
if (GetAsyncKeyState(VK_LBUTTON)) {
|
||||||
}
|
data->focus_click_pending |= !swapButtons ? SDL_BUTTON_LMASK : SDL_BUTTON_RMASK;
|
||||||
if (GetAsyncKeyState(VK_RBUTTON)) {
|
}
|
||||||
data->focus_click_pending |= !swapButtons ? SDL_BUTTON_RMASK : SDL_BUTTON_LMASK;
|
if (GetAsyncKeyState(VK_RBUTTON)) {
|
||||||
}
|
data->focus_click_pending |= !swapButtons ? SDL_BUTTON_RMASK : SDL_BUTTON_LMASK;
|
||||||
if (GetAsyncKeyState(VK_MBUTTON)) {
|
}
|
||||||
data->focus_click_pending |= SDL_BUTTON_MMASK;
|
if (GetAsyncKeyState(VK_MBUTTON)) {
|
||||||
}
|
data->focus_click_pending |= SDL_BUTTON_MMASK;
|
||||||
if (GetAsyncKeyState(VK_XBUTTON1)) {
|
}
|
||||||
data->focus_click_pending |= SDL_BUTTON_X1MASK;
|
if (GetAsyncKeyState(VK_XBUTTON1)) {
|
||||||
}
|
data->focus_click_pending |= SDL_BUTTON_X1MASK;
|
||||||
if (GetAsyncKeyState(VK_XBUTTON2)) {
|
}
|
||||||
data->focus_click_pending |= SDL_BUTTON_X2MASK;
|
if (GetAsyncKeyState(VK_XBUTTON2)) {
|
||||||
|
data->focus_click_pending |= SDL_BUTTON_X2MASK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SetKeyboardFocus(data->keyboard_focus ? data->keyboard_focus : window);
|
SDL_SetKeyboardFocus(data->keyboard_focus ? data->keyboard_focus : window);
|
||||||
|
|||||||
Reference in New Issue
Block a user