win32: Pass through non-left mouse button presses when over draggable areas

Returning anything other an HTCLIENT result will cause windows to eat the button press, so ensure that non-left presses are passed through to the client over draggable areas.
This commit is contained in:
Frank Praznik
2025-01-15 14:45:48 -05:00
parent 84d35587ee
commit dd0bdc2561

View File

@@ -2072,7 +2072,19 @@ LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
return ret; \
}
case SDL_HITTEST_DRAGGABLE:
{
/* If the mouse button state is something other than none or left button down,
* return HTCLIENT, or Windows will eat the button press.
*/
SDL_MouseButtonFlags buttonState = SDL_GetGlobalMouseState(NULL, NULL);
if (buttonState && !(buttonState & SDL_BUTTON_LMASK)) {
// Set focus in case it was lost while previously moving over a draggable area.
SDL_SetMouseFocus(window);
return HTCLIENT;
}
POST_HIT_TEST(HTCAPTION);
}
case SDL_HITTEST_RESIZE_TOPLEFT:
POST_HIT_TEST(HTTOPLEFT);
case SDL_HITTEST_RESIZE_TOP: