[ros-diffs] [mjmartin] 47924: [win32k] - Revert changes done in 47325 which partially broke mouse hooks. - If the UserSetCursorPos is reached due to SetCursorPos, dont generate a mouse move message or call mouse hooks.

mjmartin at svn.reactos.org mjmartin at svn.reactos.org
Fri Jul 2 10:49:11 UTC 2010


Author: mjmartin
Date: Fri Jul  2 10:49:11 2010
New Revision: 47924

URL: http://svn.reactos.org/svn/reactos?rev=47924&view=rev
Log:
[win32k]
- Revert changes done in 47325 which partially broke mouse hooks.
- If the UserSetCursorPos is reached due to SetCursorPos, dont generate a mouse move message or call mouse hooks.

Modified:
    trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c
    trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c?rev=47924&r1=47923&r2=47924&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c [iso-8859-1] Fri Jul  2 10:49:11 2010
@@ -175,11 +175,10 @@
     return hOldCursor;
 }
 
-BOOL UserSetCursorPos( INT x, INT y, BOOL CallHooks)
+BOOL UserSetCursorPos( INT x, INT y, BOOL SendMouseMoveMsg)
 {
     PWINDOW_OBJECT DesktopWindow;
     PSYSTEM_CURSORINFO CurInfo;
-    MSLLHOOKSTRUCT MouseHookData;
     HDC hDC;
     MSG Msg;
 
@@ -225,44 +224,16 @@
     //Move the mouse pointer
     GreMovePointer(hDC, x, y);
 
+    if (!SendMouseMoveMsg)
+       return TRUE;
+
     //Generate a mouse move message
     Msg.message = WM_MOUSEMOVE;
     Msg.wParam = CurInfo->ButtonsDown;
     Msg.lParam = MAKELPARAM(x, y);
     Msg.pt = gpsi->ptCursor;
-
-    MouseHookData.pt.x = LOWORD(Msg.lParam);
-    MouseHookData.pt.y = HIWORD(Msg.lParam);
-    switch(Msg.message)
-    {
-        case WM_MOUSEWHEEL:
-            MouseHookData.mouseData = MAKELONG(0, GET_WHEEL_DELTA_WPARAM(Msg.wParam));
-            break;
-        case WM_XBUTTONDOWN:
-        case WM_XBUTTONUP:
-        case WM_XBUTTONDBLCLK:
-        case WM_NCXBUTTONDOWN:
-        case WM_NCXBUTTONUP:
-        case WM_NCXBUTTONDBLCLK:
-             MouseHookData.mouseData = MAKELONG(0, HIWORD(Msg.wParam));
-             break;
-        default:
-             MouseHookData.mouseData = 0;
-             break;
-     }
-
-    MouseHookData.flags = 0;
-    MouseHookData.time = Msg.time;
-    MouseHookData.dwExtraInfo = 0;
-
-    if (CallHooks)
-    {
-      /* If the hook procedure returned non zero, dont send the message */
-      if (co_HOOK_CallHooks(WH_MOUSE_LL, HC_ACTION, Msg.message, (LPARAM) &MouseHookData))
-        return FALSE;
-    }
-
     MsqInsertSystemMessage(&Msg);
+
     return TRUE;
 }
 

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c?rev=47924&r1=47923&r2=47924&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c [iso-8859-1] Fri Jul  2 10:49:11 2010
@@ -174,9 +174,39 @@
    LARGE_INTEGER LargeTickCount;
    KIRQL OldIrql;
    ULONG Prev;
+   MSLLHOOKSTRUCT MouseHookData;
 
    KeQueryTickCount(&LargeTickCount);
    Msg->time = MsqCalculateMessageTime(&LargeTickCount);
+
+   MouseHookData.pt.x = LOWORD(Msg->lParam);
+   MouseHookData.pt.y = HIWORD(Msg->lParam);
+   switch(Msg->message)
+   {
+      case WM_MOUSEWHEEL:
+         MouseHookData.mouseData = MAKELONG(0, GET_WHEEL_DELTA_WPARAM(Msg->wParam));
+         break;
+      case WM_XBUTTONDOWN:
+      case WM_XBUTTONUP:
+      case WM_XBUTTONDBLCLK:
+      case WM_NCXBUTTONDOWN:
+      case WM_NCXBUTTONUP:
+      case WM_NCXBUTTONDBLCLK:
+         MouseHookData.mouseData = MAKELONG(0, HIWORD(Msg->wParam));
+         break;
+      default:
+         MouseHookData.mouseData = 0;
+         break;
+   }
+
+   MouseHookData.flags = 0;
+   MouseHookData.time = Msg->time;
+   MouseHookData.dwExtraInfo = 0;
+
+   /* If the hook procedure returned non zero, dont send the message */
+   if (co_HOOK_CallHooks(WH_MOUSE_LL, HC_ACTION, Msg->message, (LPARAM) &MouseHookData))
+      return;
+
    /*
     * If we got WM_MOUSEMOVE and there are already messages in the
     * system message queue, check if the last message is mouse move




More information about the Ros-diffs mailing list