From 61ff86617ac9aa86e843aacd29b060b628bf9456 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 5 Jul 2023 11:05:48 -0700 Subject: [PATCH] Added GetClientScreenRect() and fixed build for C89 compilers --- src/video/windows/SDL_windowswindow.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index e42014f13..c200359e4 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -1300,6 +1300,13 @@ void WIN_OnWindowEnter(SDL_VideoDevice *_this, SDL_Window *window) } } +static BOOL GetClientScreenRect(HWND hwnd, RECT *rect) +{ + return GetClientRect(hwnd, rect) && /* RECT( left , top , right , bottom ) */ + ClientToScreen(hwnd, (LPPOINT)rect) && /* POINT( left , top ) */ + ClientToScreen(hwnd, (LPPOINT)rect + 1); /* POINT( right , bottom ) */ +} + void WIN_UpdateClipCursor(SDL_Window *window) { SDL_WindowData *data = window->driverdata; @@ -1320,9 +1327,7 @@ void WIN_UpdateClipCursor(SDL_Window *window) (window->mouse_rect.w > 0 && window->mouse_rect.h > 0)) && (window->flags & SDL_WINDOW_INPUT_FOCUS)) { if (mouse->relative_mode && !mouse->relative_mode_warp && data->mouse_relative_mode_center) { - if (GetClientRect(data->hwnd, &rect)) { /* RECT( left , top , right , bottom ) */ - ClientToScreen(data->hwnd, (LPPOINT)&rect); /* POINT( left , top ) */ - ClientToScreen(data->hwnd, (LPPOINT)&rect + 1); /* POINT( right , bottom ) */ + if (GetClientScreenRect(data->hwnd, &rect)) { /* WIN_WarpCursor() jitters by +1, and remote desktop warp wobble is +/- 1 */ LONG remote_desktop_adjustment = GetSystemMetrics(SM_REMOTESESSION) ? 2 : 0; LONG cx, cy; @@ -1343,9 +1348,7 @@ void WIN_UpdateClipCursor(SDL_Window *window) } } } else { - if (GetClientRect(data->hwnd, &rect)) { - ClientToScreen(data->hwnd, (LPPOINT)&rect); - ClientToScreen(data->hwnd, (LPPOINT)&rect + 1); + if (GetClientScreenRect(data->hwnd, &rect)) { if (window->mouse_rect.w > 0 && window->mouse_rect.h > 0) { SDL_Rect mouse_rect_win_client; RECT mouse_rect, intersection;