user32: Make sure that SendInput always initializes the time field. Take 2.
Dmitry Timoshkov
dmitry at codeweavers.com
Wed Sep 22 01:49:45 CDT 2010
This patch should fix the problem reported in the bug 24435.
---
dlls/user32/input.c | 4 ++--
dlls/winex11.drv/keyboard.c | 2 ++
dlls/winex11.drv/mouse.c | 2 ++
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index 0dccf21..6e1e459 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -167,7 +167,7 @@ void WINAPI keybd_event( BYTE bVk, BYTE bScan,
input.u.ki.wVk = bVk;
input.u.ki.wScan = bScan;
input.u.ki.dwFlags = dwFlags;
- input.u.ki.time = GetTickCount();
+ input.u.ki.time = 0;
input.u.ki.dwExtraInfo = dwExtraInfo;
SendInput( 1, &input, sizeof(input) );
}
@@ -186,7 +186,7 @@ void WINAPI mouse_event( DWORD dwFlags, DWORD dx, DWORD dy,
input.u.mi.dy = dy;
input.u.mi.mouseData = dwData;
input.u.mi.dwFlags = dwFlags;
- input.u.mi.time = GetCurrentTime();
+ input.u.mi.time = 0;
input.u.mi.dwExtraInfo = dwExtraInfo;
SendInput( 1, &input, sizeof(input) );
}
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
index 02fd6bb..d6054d6 100644
--- a/dlls/winex11.drv/keyboard.c
+++ b/dlls/winex11.drv/keyboard.c
@@ -1158,6 +1158,8 @@ void X11DRV_send_keyboard_input( WORD wVk, WORD wScan, DWORD event_flags, DWORD
WORD flags, wVkStripped, wVkL, wVkR, vk_hook = wVk;
LPARAM lParam = 0;
+ if (!time) time = GetTickCount();
+
wVk = LOBYTE(wVk);
flags = LOBYTE(wScan);
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
index cf988c9..922df65 100644
--- a/dlls/winex11.drv/mouse.c
+++ b/dlls/winex11.drv/mouse.c
@@ -345,6 +345,8 @@ void X11DRV_send_mouse_input( HWND hwnd, DWORD flags, DWORD x, DWORD y,
{
POINT pt;
+ if (!time) time = GetTickCount();
+
if (flags & MOUSEEVENTF_MOVE && flags & MOUSEEVENTF_ABSOLUTE)
{
if (injected_flags & LLMHF_INJECTED)
--
1.7.0.6
More information about the wine-patches
mailing list