Author: jimtabor
Date: Sat Jun 11 12:56:29 2011
New Revision: 52188
URL:
http://svn.reactos.org/svn/reactos?rev=52188&view=rev
Log:
[Win32k]
- Fixed mouse tracking. See bug 6257.
Modified:
trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c [iso-8859-1] Sat Jun 11
12:56:29 2011
@@ -523,13 +523,8 @@
/* Get the desktop window */
pwndDesktop = UserGetDesktopWindow();
- if (!pwndDesktop)
- return;
-
- /* Set hit somewhere on the desktop */
+ if (!pwndDesktop) return;
pDesk = pwndDesktop->head.rpdesk;
- pDesk->htEx = HTNOWHERE;
- pDesk->spwndTrack = pwndDesktop;
/* Check if the mouse is captured */
Msg->hwnd = IntGetCaptureWindow();
@@ -545,7 +540,21 @@
if (pwnd)
{
- pDesk->spwndTrack = IntChildrenWindowFromPoint(pwnd, Msg->pt.x,
Msg->pt.y);
+ PWND pwndTrack = IntChildrenWindowFromPoint(pwnd, Msg->pt.x, Msg->pt.y);
+
+ if ( pDesk->spwndTrack != pwndTrack && pDesk->dwDTFlags &
(DF_TME_LEAVE|DF_TME_HOVER) )
+ {
+ if ( pDesk->dwDTFlags & DF_TME_LEAVE )
+ UserPostMessage( UserHMGetHandle(pDesk->spwndTrack),
+ (pDesk->htEx != HTCLIENT) ? WM_NCMOUSELEAVE :
WM_MOUSELEAVE,
+ 0, 0);
+
+ if ( pDesk->dwDTFlags & DF_TME_HOVER )
+ IntKillTimer(UserHMGetHandle(pDesk->spwndTrack),
ID_EVENT_SYSTIMER_MOUSEHOVER, TRUE);
+
+ pDesk->dwDTFlags &= ~(DF_TME_LEAVE|DF_TME_HOVER);
+ }
+ pDesk->spwndTrack = pwndTrack;
pDesk->htEx = GetNCHitEx(pDesk->spwndTrack, Msg->pt);
}