From 4676705de00931379120f40c0a1271c5805da80f Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 11 Jun 2014 00:12:19 -0400 Subject: [PATCH] Implement Windows GetAbsoluteMouseState(). --- src/video/windows/SDL_windowsmouse.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index 0abd212404623..8bb4106e288a5 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -260,6 +260,24 @@ WIN_CaptureMouse(SDL_Window *window) return ToggleRawInput(window != NULL); } +static Uint32 +WIN_GetAbsoluteMouseState(int *x, int *y) +{ + Uint32 retval = 0; + POINT pt = { 0, 0 }; + GetCursorPos(&pt); + *x = (int) pt.x; + *y = (int) pt.y; + + retval |= GetAsyncKeyState(VK_LBUTTON) & 0x8000 ? SDL_BUTTON_LMASK : 0; + retval |= GetAsyncKeyState(VK_RBUTTON) & 0x8000 ? SDL_BUTTON_RMASK : 0; + retval |= GetAsyncKeyState(VK_MBUTTON) & 0x8000 ? SDL_BUTTON_MMASK : 0; + retval |= GetAsyncKeyState(VK_X1BUTTON) & 0x8000 ? SDL_BUTTON_X1MASK : 0; + retval |= GetAsyncKeyState(VK_X2BUTTON) & 0x8000 ? SDL_BUTTON_X2MASK : 0; + + return retval; +} + void WIN_InitMouse(_THIS) { @@ -272,6 +290,7 @@ WIN_InitMouse(_THIS) mouse->WarpMouse = WIN_WarpMouse; mouse->SetRelativeMouseMode = WIN_SetRelativeMouseMode; mouse->CaptureMouse = WIN_CaptureMouse; + mouse->GetAbsoluteMouseState = WIN_GetAbsoluteMouseState; SDL_SetDefaultCursor(WIN_CreateDefaultCursor());