[WIN32K] Check if the window being destroyed is currently tracked. (#103)
[reactos.git] / win32ss / user / ntuser / mouse.c
index fc3827e..46dfcfd 100644 (file)
@@ -342,6 +342,26 @@ UserSendMouseInput(MOUSEINPUT *pmi, BOOL bInjected)
     return TRUE;
 }
 
+VOID
+FASTCALL
+IntRemoveTrackMouseEvent(
+    PDESKTOP pDesk)
+{
+    /* Generate a leave message */
+    if (pDesk->dwDTFlags & DF_TME_LEAVE)
+    {
+        UINT uMsg = (pDesk->htEx != HTCLIENT) ? WM_NCMOUSELEAVE : WM_MOUSELEAVE;
+        UserPostMessage(UserHMGetHandle(pDesk->spwndTrack), uMsg, 0, 0);
+    }
+    /* Kill the timer */
+    if (pDesk->dwDTFlags & DF_TME_HOVER)
+        IntKillTimer(pDesk->spwndTrack, ID_EVENT_SYSTIMER_MOUSEHOVER, TRUE);
+
+    /* Reset state */
+    pDesk->dwDTFlags &= ~(DF_TME_LEAVE|DF_TME_HOVER);
+    pDesk->spwndTrack = NULL;
+}
+
 BOOL
 FASTCALL
 IntQueryTrackMouseEvent(