Module: wine Branch: master Commit: ac3e887e5d0bcfef13546ed0441b8179ec4430f2 URL: https://source.winehq.org/git/wine.git/?a=commit;h=ac3e887e5d0bcfef13546ed04...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Aug 27 14:17:19 2018 +0200
user32: Support the MOUSEEVENTF_VIRTUALDESK flag in SendInput().
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/input.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 9d87393..72a68dd 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -141,8 +141,17 @@ static void update_mouse_coords( INPUT *input )
if (input->u.mi.dwFlags & MOUSEEVENTF_ABSOLUTE) { - input->u.mi.dx = (input->u.mi.dx * GetSystemMetrics( SM_CXSCREEN )) >> 16; - input->u.mi.dy = (input->u.mi.dy * GetSystemMetrics( SM_CYSCREEN )) >> 16; + if (input->u.mi.dwFlags & MOUSEEVENTF_VIRTUALDESK) + { + RECT rc = get_virtual_screen_rect(); + input->u.mi.dx = rc.left + ((input->u.mi.dx * (rc.right - rc.left)) >> 16); + input->u.mi.dy = rc.top + ((input->u.mi.dy * (rc.bottom - rc.top)) >> 16); + } + else + { + input->u.mi.dx = (input->u.mi.dx * GetSystemMetrics( SM_CXSCREEN )) >> 16; + input->u.mi.dy = (input->u.mi.dy * GetSystemMetrics( SM_CYSCREEN )) >> 16; + } } else {