[Win32k]
authorJames Tabor <james.tabor@reactos.org>
Sat, 15 Oct 2011 00:38:23 +0000 (00:38 +0000)
committerJames Tabor <james.tabor@reactos.org>
Sat, 15 Oct 2011 00:38:23 +0000 (00:38 +0000)
commitdf27194993b910dad8c8b0e95cd8a7226d2e77d5
treeda7a4bf5865ca8d3289d462ac30030267b43222d
parent6882857840b49ecd576ea30d2a48c77eace293fe
[Win32k]
- Properly set the timer event id's to match tests and add one more bit for track.
- Restore TME user API (now in mouse.c) and Hover Timer, these are not the Droids you are looking for.
- Restore TME cancellation point in co_MsqInsertMouseMessage and duplicate the the same in co_IntProcessMouseMessage. First thing, pDesk->spwndTrack is never NULL. The Theme TME patch code was setting the wrong QS bit and sending to the wrong queue instead of the pDesk->spwndTrack queue. Surprising this was working at all.
- Tested with Themes, passes wine test_TrackMouseEvent and fixes bug (6257 <-- !).
Notes:
  It's all in the sequencing. Locate cancellation points, tracking mouse moves and set the hit test and track window. When the window message queue does not match the current thread, check it again and restore the mouse hover window if it is the same window as the track window and the hover bit set. Track cancellation points and clear the bits at the same time. Not when in WM_MOUSEMOVE. Guess when posting or sending to another thread? co_MsqInsertMouseMessage?

svn path=/trunk/; revision=54142
reactos/subsystems/win32/win32k/include/desktop.h
reactos/subsystems/win32/win32k/include/timer.h
reactos/subsystems/win32/win32k/ntuser/mouse.c
reactos/subsystems/win32/win32k/ntuser/msgqueue.c
reactos/subsystems/win32/win32k/ntuser/timer.c