mirror of https://github.com/encounter/SDL.git
Fixed relative mouse mode with multiple windows.
The window cursor clipping will be taken care of when SDL_UpdateWindowGrab() is called.
This commit is contained in:
parent
54debf84e4
commit
973d890b83
|
@ -196,44 +196,20 @@ static int
|
||||||
WIN_SetRelativeMouseMode(SDL_bool enabled)
|
WIN_SetRelativeMouseMode(SDL_bool enabled)
|
||||||
{
|
{
|
||||||
RAWINPUTDEVICE rawMouse = { 0x01, 0x02, 0, NULL }; /* Mouse: UsagePage = 1, Usage = 2 */
|
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.dwFlags |= RIDEV_REMOVE;
|
||||||
rawMouse.hwndTarget = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* (Un)register raw input for mice */
|
/* (Un)register raw input for mice */
|
||||||
if (RegisterRawInputDevices(&rawMouse, 1, sizeof(RAWINPUTDEVICE)) == FALSE) {
|
if (RegisterRawInputDevices(&rawMouse, 1, sizeof(RAWINPUTDEVICE)) == FALSE) {
|
||||||
|
|
||||||
/* Only return an error when registering. If we unregister and fail, then
|
/* Only return an error when registering. If we unregister and fail, then
|
||||||
it's probably that we unregistered twice. That's OK. */
|
it's probably that we unregistered twice. That's OK. */
|
||||||
if(enabled) {
|
if (enabled) {
|
||||||
return SDL_Unsupported();
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue