Implement Windows GetAbsoluteMouseState().
authorRyan C. Gordon <icculus@icculus.org>
Wed, 11 Jun 2014 00:12:19 -0400
changeset 8950 66b11e777d54
parent 8949 9738e8208dd5
child 8951 692ba71b9c04
Implement Windows GetAbsoluteMouseState().
src/video/windows/SDL_windowsmouse.c
--- a/src/video/windows/SDL_windowsmouse.c	Wed Jun 11 00:12:06 2014 -0400
+++ b/src/video/windows/SDL_windowsmouse.c	Wed Jun 11 00:12:19 2014 -0400
@@ -260,6 +260,24 @@
     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 @@
     mouse->WarpMouse = WIN_WarpMouse;
     mouse->SetRelativeMouseMode = WIN_SetRelativeMouseMode;
     mouse->CaptureMouse = WIN_CaptureMouse;
+    mouse->GetAbsoluteMouseState = WIN_GetAbsoluteMouseState;
 
     SDL_SetDefaultCursor(WIN_CreateDefaultCursor());