Fix T84645 cursor moves when clicking selector.
The absolute position desktop mapping has been corrected. The correct mapping is 0-65535 inclusive. Additionally, division by the virtual desktop width and height needed to be subtracted by 1 as width and height are one more than the final pixel index.
This commit is contained in:
parent
c4c2c4bdb8
commit
b6aa8daf49
@ -541,11 +541,11 @@ GHOST_TSuccess GHOST_SystemWin32::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32
|
||||
input.type = INPUT_MOUSE;
|
||||
input.mi.mouseData = 0;
|
||||
input.mi.time = ::GetTickCount();
|
||||
/* Map from virtual screen to 0-65536. */
|
||||
input.mi.dx = (x - GetSystemMetrics(SM_XVIRTUALSCREEN)) * 65536 /
|
||||
GetSystemMetrics(SM_CXVIRTUALSCREEN);
|
||||
input.mi.dy = (y - GetSystemMetrics(SM_YVIRTUALSCREEN)) * 65536 /
|
||||
GetSystemMetrics(SM_CYVIRTUALSCREEN);
|
||||
/* Map from virtual screen to 0-65535 inclusive. */
|
||||
input.mi.dx = (x - GetSystemMetrics(SM_XVIRTUALSCREEN)) * 65535 /
|
||||
(GetSystemMetrics(SM_CXVIRTUALSCREEN) - 1);
|
||||
input.mi.dy = (y - GetSystemMetrics(SM_YVIRTUALSCREEN)) * 65535 /
|
||||
(GetSystemMetrics(SM_CYVIRTUALSCREEN) - 1);
|
||||
input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_VIRTUALDESK;
|
||||
SendInput(1, &input, sizeof(input));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user