[PATCH] user32: Reimplement TrackMouseEvent.

Rafał Harabień rafalh1992 at o2.pl
Mon Nov 20 18:01:11 CST 2017


Tests show that TME_QUERY returns valid data if TME_LEAVE or TME_HOVER 
tracking is active for window in current thread and returns empty data 
after starting tracking for window from other thread ("track_query(0, 
NULL, 0)" in test code). It cannot work this way with global variable 
(as used already in HEAD).

I used SendNotifyMessageW because I don't see a way to get 
user_thread_info pointer for other threads. Is there any good 
alternative to store thread related data?

What other test can I provide?


W dniu 20.11.2017 o 11:52, Alexandre Julliard pisze:
> Rafał Harabień <rafalh1992 at o2.pl> writes:
>
>> Improvements:
>> - Don't use timer for TME_LEAVE and react immediately on mouse motion.
>> It improves user experience for controls depending on this API like toolbar.
>> - Fail when called with invalid flags
>> - Hold tracking info for each win32 thread independently
>> - Merge tracking requests if possible (leave+hover)
>> - Return hover time 0 when hover tracking is disabled
> I still don't see a test justifying the use of local thread data. In
> fact, if you have to do things like this:
>
>> +    /* use internal message to get access to user_thread_info for tracked window */
>> +    return SendNotifyMessageW(ptme->hwndTrack, WM_WINE_TRACKMOUSEEVENT, ptme->dwFlags, ptme->dwHoverTime);
> it suggests that maybe the thread data is not the right place.
>




More information about the wine-devel mailing list