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@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.