mirror of
https://github.com/blender/blender
synced 2026-09-29 04:37:17 +03:00
Fix T84701: Popup closes on release while dragging parameter.
Windows Ghost cursor movement was previously changed to use SendInput because SetCursorPos sporadically allows the cursor to escape the window. This is now reverted because SendInput causes mouse history via GetMouseMovePointsEx to contain invalid movement history, likely due to interaction with mouse acceleration. This resulted in popups closing when the cursor appeared to leave their range.
This commit is contained in:
parent
c13754e647
commit
ab21009842
1 changed files with 1 additions and 14 deletions
|
|
@ -531,20 +531,7 @@ GHOST_TSuccess GHOST_SystemWin32::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32
|
|||
{
|
||||
if (!::GetActiveWindow())
|
||||
return GHOST_kFailure;
|
||||
|
||||
INPUT input;
|
||||
input.type = INPUT_MOUSE;
|
||||
input.mi.mouseData = 0;
|
||||
input.mi.time = ::GetTickCount();
|
||||
/* 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));
|
||||
|
||||
return GHOST_kSuccess;
|
||||
return ::SetCursorPos(x, y) == TRUE ? GHOST_kSuccess : GHOST_kFailure;
|
||||
}
|
||||
|
||||
GHOST_TSuccess GHOST_SystemWin32::getModifierKeys(GHOST_ModifierKeys &keys) const
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue