http://bugs.winehq.org/show_bug.cgi?id=3107
Igor Tarasov tarasov.igor@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tarasov.igor@gmail.com
--- Comment #6 from Igor Tarasov tarasov.igor@gmail.com 2008-05-07 16:50:05 --- I'm not sure if this is the sam bug, but I've found similar problem with Watchtower Library.
There are lots of database queries results being shown in the listview box, and there are several headers clicking which leads to reorder.
But! Sorting is being done not natively. When you click the header popup progress bar appears showing query progress. This means, that listview header click calls some application routine that runs a query and repopulates listview.
Here is what I've found. When header is being clicked the following appears in the log:
trace:listview:LISTVIEW_HeaderNotification (lpnmh=0x32fb18) trace:listview:LISTVIEW_HeaderNotification (lpnmh=0x32fbac) trace:listview:notify_listview (code=-108, plvnm=iItem=-1, iSubItem=2, uNewState=0x0, uOldState=0x0, uChanged=0x0, ptAction=(0,0), lParam=0) trace:listview:notify_hdr (code=-108) trace:listview:notify_hdr <= 0 trace:listview:LISTVIEW_HeaderNotification (lpnmh=0x32fbc0) trace:listview:LISTVIEW_HeaderNotification (lpnmh=0x32fb18)
I did a bit of testing (as much as my knowledge allows) and found the following:
There is a switch construction in LISTVIEW_HeaderNotification that takes lpnmh->hdr.code as argument. And it just do not have ptoper case! So, I suppose that problem is quite easily fixable since as I understand proper case supposes simple delegation.
After adding this:
default: FIXME("Unmatched case: (hdr.code=%d)\n", lpnmh->hdr.code); break;
To the end of the switch (line 8909) and making debug run, I've got the following:
trace:listview:LISTVIEW_HeaderNotification (lpnmh=0x32fb18) fixme:listview:LISTVIEW_HeaderNotification Unmatched case: (hdr.code=-12) trace:listview:LISTVIEW_WindowProc (uMsg=4e wParam=0 lParam=32fbac) trace:listview:LISTVIEW_HeaderNotification (lpnmh=0x32fbac) trace:listview:notify_listview (code=-108, plvnm=iItem=-1, iSubItem=2, uNewState=0x0, uOldState=0x0, uChanged=0x0, ptAction=(0,0), lParam=0) trace:listview:notify_hdr (code=-108) trace:listview:notify_hdr <= 0 trace:listview:LISTVIEW_WindowProc (uMsg=4e wParam=0 lParam=32fbc0) trace:listview:LISTVIEW_HeaderNotification (lpnmh=0x32fbc0) trace:listview:LISTVIEW_WindowProc (uMsg=4e wParam=0 lParam=32fb18) trace:listview:LISTVIEW_HeaderNotification (lpnmh=0x32fb18) fixme:listview:LISTVIEW_HeaderNotification Unmatched case: (hdr.code=-12)
Unmatched case is -12, wich is HDN_FILTERCHANGE as I suppose, but I am not too sure.