"James Hawkins" truiken@gmail.com wrote:
You were right about having the NM_CLICK msg sent in LISTVIEW_LButtonUp, and the problem was that a WM_LBUTTONUP msg was never sent. This fixes the problem where you had to double click an item in the drives list to select it.
Changelog
- Make sure a WM_LBUTTONUP msg is dispatched after tracking a WM_LBUTTONDOWN msg
--- dlls/comctl32/listview.c 6 May 2005 15:44:32 -0000 1.409 +++ dlls/comctl32/listview.c 12 May 2005 05:04:06 -0000 @@ -7948,6 +7948,9 @@ static LRESULT LISTVIEW_TrackMouse(LISTV else if (msg.message >= WM_LBUTTONDOWN && msg.message <= WM_RBUTTONDBLCLK) {
if (msg.message == WM_LBUTTONUP)
DispatchMessageW(&msg);
Why WM_LBUTTONUP should be different from other kinds of messages? I.e. why all messages could not be passed to DispatchMessage? What if just move DispatchMessageW call right right after PeekMessageW?