http://bugs.winehq.org/show_bug.cgi?id=12701
Summary: listview: works slow and wrong Product: Wine Version: 0.9.60 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: comctl32 AssignedTo: wine-bugs@winehq.org ReportedBy: tarasov.igor@gmail.com
Created an attachment (id=12353) --> (http://bugs.winehq.org/attachment.cgi?id=12353) 7zipped log of warn+all,+listview on wine 0.9.60
Here is a deal: There is a list view containing 300K+ items. Looks like this: http://polosatus.ru/wine/listview.png It's a full list of all words indexed in some database.
When using native comctl32.dll, you just type the text in and the list *immediately* jumps to the item that starts from the letters you've entered. Works pretty simple and swift and no CPU load.
But when you use builtin comctl32.dll there are 3 problems:
1. It hangs on each keypress. In log (77Mb) you may see a lot of iterations like this:
trace:listview:ranges_cmp range1=[22765, 22766], range2=[25271, 25272], cmp=-1 trace:listview:ranges_contain (nItem=22766) trace:listview:ranges_assert *** Checking ranges_contain:2691:before contain *** trace:listview:ranges_dump [25271, 25272] trace:listview:ranges_assert --- Done checking---
And each keypress results in new rescan, as it hangs pretty well even if the highlighted item matches new typed letter. And the further first match is, the longer it hangs on each keypress.
2. It searches not items STARTING with enterred text, but items CONTAINING it. Both of these bugs make usage of this box a nonsense. When you try to find, for instance an item "most" and you type "most" it would stop at the point "almost" and so, you have to search it manually by scrolling.
3. When I close this box, it just hangs again for a few secs (and generates another 50M+ to log).
When generating log, I've typed only three letters: "alt" and it was enough to generate 20M+ log. Another 55M+ where generated when I clicked close button.