Fixed relative mouse mode with multiple windows.
The window cursor clipping will be taken care of when SDL_UpdateWindowGrab() is called.
parent
54debf84e4
commit
973d890b83
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue