Skip to content

Commit

Permalink
Fixed relative mouse mode with multiple windows.
Browse files Browse the repository at this point in the history
The window cursor clipping will be taken care of when SDL_UpdateWindowGrab() is called.
  • Loading branch information
slouken committed Feb 25, 2014
1 parent 54debf8 commit 973d890
Showing 1 changed file with 2 additions and 26 deletions.
28 changes: 2 additions & 26 deletions src/video/windows/SDL_windowsmouse.c
Expand Up @@ -196,44 +196,20 @@ static int
WIN_SetRelativeMouseMode(SDL_bool enabled)
{
RAWINPUTDEVICE rawMouse = { 0x01, 0x02, 0, NULL }; /* Mouse: UsagePage = 1, Usage = 2 */
HWND hWnd;
hWnd = GetActiveWindow();

rawMouse.hwndTarget = hWnd;
if(!enabled) {
if (!enabled) {
rawMouse.dwFlags |= RIDEV_REMOVE;
rawMouse.hwndTarget = NULL;
}


/* (Un)register raw input for mice */
if (RegisterRawInputDevices(&rawMouse, 1, sizeof(RAWINPUTDEVICE)) == FALSE) {

/* Only return an error when registering. If we unregister and fail, then
it's probably that we unregistered twice. That's OK. */
if(enabled) {
if (enabled) {
return SDL_Unsupported();
}
}

if (enabled) {
LONG cx, cy;
RECT rect;
GetWindowRect(hWnd, &rect);

cx = (rect.left + rect.right) / 2;
cy = (rect.top + rect.bottom) / 2;

/* Make an absurdly small clip rect */
rect.left = cx-1;
rect.right = cx+1;
rect.top = cy-1;
rect.bottom = cy+1;

ClipCursor(&rect);
} else {
ClipCursor(NULL);
}
return 0;
}

Expand Down

0 comments on commit 973d890

Please sign in to comment.