Hi folks,
Here's a quick status update on the listview.
Currently, the listview goes through a major cleanup. It is required -- the file is huge (over 10000 lines when I started, now it's 9200 with more features!), and has accumulated a lot of cruft over the last few years. This is very normal for such a complex control as listview, and we need to prep the code to add more features.
At the same time, I go over the code, review it for correctness, fix bugs, and implement the missing functionality. While it may look I do mostly code reorganizations, this is not the case: a lot of corner bugs have been fixed, functionality has been enhanced, code has been cleaned up, and simplified. Due to the cleaner code base, we are in a better position to fix problem, and add features.
The downside of all this is that (1) old bugs, and missing functionality is exposed, (2) new bugs are introduced. On top of it all, two major efforts were happening simultaneously: Guy's ICON mode work, and mine. Guy did a wonderful job at fixing some of the issues in ICON mode, unfortunately my changes interacted with his in a nasty way.
So we have some problems. I am aware of some of them, and I'm working to fix them. But it will take some time, as I trying to fix a problem, I see some cleanup that needs doing _before_ I work on the bug itself.
Currently, I am aware of the following problems: -- selection (clicking on items sometimes does not select them) -- drawing (focus, background, etc.) -- calculating item rectangles
If you are experience problems with the listview, I'd like to hear from you. If you want to help, some test cases will help quite a bit.
On 03 Oct 2002, dpaun@rogers.com wrote:
If you are experience problems with the listview, I'd like to hear from you. If you want to help, some test cases will help quite a bit.
I don't know if you've looked at it already, but I filed this earlier: http://bugs.winehq.com/show_bug.cgi?id=1041. Xnews seems to be a pretty good app for stressing listview controls in general too.
On October 3, 2002 07:31 pm, Paul Rupe wrote:
I don't know if you've looked at it already, but I filed this earlier: http://bugs.winehq.com/show_bug.cgi?id=1041. Xnews seems to be a pretty good app for stressing listview controls in general too.
Excellent! I've downloaded Xnews, it's perfect. Even more so that it stresses the heck out of REPORT mode, which I've worked quite a bit to optimize. Do you get the weird drawing problems when you browse the menus? Did you encounter it before?
I'll look into the selection problem tomorrow. Thanks for the app!
On 04 Oct 2002, dpaun@rogers.com wrote:
Excellent! I've downloaded Xnews, it's perfect. Even more so that it stresses the heck out of REPORT mode, which I've worked quite a bit to optimize. Do you get the weird drawing problems when you browse the menus? Did you encounter it before?
If you mean the way it redraws only the part covered by the previous menu and blanks the rest of the window, that is new. Also switching to and from virtual desktops (so the whole app is redrawn) sometimes gives you a blank window, but not always. If you replace just listview.c with version 1.143, it should work normally. It looks like LISTVIEW_InvalidateRect is doing the right thing, but something before it blanks the entire window first. To better see it, it may help to add this to xnews.ini under [Display]: Line1Color=$CFEBF2 Line2Color=$C6E9CE I'm eager to see if the performance improves after all your changes too. The app draws itself nearly instantaneously in Win98, but has always been sluggish in Wine and I could never figure out where the bottleneck was.
On October 4, 2002 11:10 am, Paul Rupe wrote:
If you mean the way it redraws only the part covered by the previous menu and blanks the rest of the window, that is new.
Fixed in K6. Give it a try.
Also switching to and from virtual desktops (so the whole app is redrawn) sometimes gives you a blank window, but not always.
Most likely the same bug. Scrolling was also affected.
I'm eager to see if the performance improves after all your changes too. The app draws itself nearly instantaneously in Win98, but has always been sluggish in Wine and I could never figure out where the bottleneck was.
I think you'll be pleasantly surprised (once the bugs get fixed :)).
Try this: get listview 1.138. Now, get a lot of newsgroups (like All of them), and scroll by continuously pressing the up or down arrow on the scroll bar. Watch the flickering. Now to the same with the latest patches. Also, notice how snappy the newsgroup windows shows up now. Refreshes should be faster now as well.
We're not gonna feel as fast as Windows, that's that. But we shouldn't be dogs either. Please let me know if you find some things sluggish, or just plain broken.
On 04 Oct 2002, dpaun@rogers.com wrote:
On October 4, 2002 11:10 am, Paul Rupe wrote:
If you mean the way it redraws only the part covered by the previous menu and blanks the rest of the window, that is new.
Fixed in K6. Give it a try.
That fixed it. Now I notice another problem. I have two newsservers set up. One has 26 groups all of which are subscribed. The other has about 50,000 with only 13 subscribed. When I open the 50,000 one the window is blank, but if I hit the "All" button at the bottom (toggles between showing all newsgroups and only subscribed ones) everything displays fine. Hit it again to show only subscribed groups and the window goes blank. No amount of redrawing seems to fix it this time. The other server with only 26 newsgroups is fine either way though. This looks like a different problem, maybe having to do with the presence of a scrollbar or just having such a large number of rows.
We're not gonna feel as fast as Windows, that's that. But we shouldn't be dogs either. Please let me know if you find some things sluggish, or just plain broken.
Thanks, I'll keep playing with it.
On October 4, 2002 01:01 pm, Paul Rupe wrote:
When I open the 50,000 one the window is blank, but if I hit the "All"
Excellent! 50,000 -- that's what I'm talking about. The listview should feel nice, and snappy, even with 10 or 100 times that number of items...
button at the bottom (toggles between showing all newsgroups and only subscribed ones) everything displays fine. Hit it again to show only subscribed groups and the window goes blank.
Yeah, that's a different problem, probably related to the broken selection... I'll investigate.
On Thu, 3 Oct 2002 03:03:56 -0400, you wrote:
If you are experience problems with the listview, I'd like to hear from you. If you want to help, some test cases will help quite a bit.
I am trying out newsbin. There was a request ("wine ui control hacker?") two months ago on this list to work on this. The program can be downloaded from www.newsbin.com and used for a short trial period. The makers have expressed that the would be willing to donate a license for tyhe purpose to get their program work under wine.
Indeed the changes in the last weeks have improved things considerable. At this moment (current cvs) the biggest problems are:
- only the first column displays any text - new messages should be highlighted using a green background: that doesn't work - during filling the listview the screen keeps updating.
Perhaps not a listview bug but:
- there are several listviews for messages, messages selected for download, downloaded messages amd failed messages. With tabs these can be veiwed. If one listview is updated it updates regardless of the selected tab.
Rein.
On October 8, 2002 08:46 am, Rein Klazes wrote:
I am trying out newsbin. There was a request ("wine ui control hacker?") two months ago on this list to work on this. The program can be downloaded from www.newsbin.com and used for a short trial period. The makers have expressed that the would be willing to donate a license for tyhe purpose to get their program work under wine.
Can you get me one? I'd like to have another app to test with.
Indeed the changes in the last weeks have improved things considerable.
Excellent!
At this moment (current cvs) the biggest problems are:
- only the first column displays any text
That's strange. In LVS_REPORT mode, I guess? That works very well now, I'm very curious why it doesn't in your case.
- new messages should be highlighted using a green background: that
doesn't work
Hm, I guess for that to work, the control must be LVS_OWNERDRAWFIXED, in which case, it's the app that's failing. But since it works on windows...
- during filling the listview the screen keeps updating.
Yes, I've added a bunch of FIXMEs to eliminate all those screen Invalidates, when we can do better. Now it's just a matter of implementing it. :)
Perhaps not a listview bug but:
- there are several listviews for messages, messages selected for
download, downloaded messages amd failed messages. With tabs these can be veiwed. If one listview is updated it updates regardless of the selected tab.
Not sure I follow this one...
Thanks for the info! Bug reports are always welcomed.
On Tue, 8 Oct 2002 21:52:44 -0400, you wrote:
On October 8, 2002 08:46 am, Rein Klazes wrote:
I am trying out newsbin. There was a request ("wine ui control hacker?") two months ago on this list to work on this. The program can be downloaded from www.newsbin.com and used for a short trial period. The makers have expressed that the would be willing to donate a license for tyhe purpose to get their program work under wine.
Can you get me one? I'd like to have another app to test with.
I haven't had contact with them yet (the offer is on their web forum), but I will ask. In the mean time you can use the program, it is fully functional for 8 days. Install works fine under wine. Runs fine with all builtin dlls + native comctl32.
- new messages should be highlighted using a green background: that
doesn't work
Hm, I guess for that to work, the control must be LVS_OWNERDRAWFIXED, in which case, it's the app that's failing. But since it works on windows...
It even works with wine and native comctl32...
Perhaps not a listview bug but:
- there are several listviews for messages, messages selected for
download, downloaded messages amd failed messages. With tabs these can be veiwed. If one listview is updated it updates regardless of the selected tab.
Not sure I follow this one...
It is more difficult to explain then to see. I try another way:
There are several listview controls in the main windowpane, you can select one using a tab control. This should make all the listviews exept the one that is at the front tab invisible. They are not: if one of the hidden listviews changes, the refresh is painted anyway.
Thanks for the info! Bug reports are always welcomed.
Two more things:
- in the left pane you should be able to drag and drop the subscribed news groups to re-order them. That does not work.
- mouse wheel does not work. It doesn't work with native comctl32 either, it may not be listview related at all.
Rein.
On October 9, 2002 05:00 am, Rein Klazes wrote:
Hm, I guess for that to work, the control must be LVS_OWNERDRAWFIXED, in which case, it's the app that's failing. But since it works on windows...
It even works with wine and native comctl32...
Yeah, I though about it some more -- I think they are using custom draw, but our is a bit broken now. Will fix. It's a minor nit, though.
It is more difficult to explain then to see. I try another way:
There are several listview controls in the main windowpane, you can select one using a tab control. This should make all the listviews exept the one that is at the front tab invisible. They are not: if one of the hidden listviews changes, the refresh is painted anyway.
It doesn't sound like a listview problem. More like somethig for Alexandre to look at <g>.
- in the left pane you should be able to drag and drop the subscribed
news groups to re-order them. That does not work.
I haven't looked at all at drag and drop. Not at the top of my TODO list.
- mouse wheel does not work. It doesn't work with native comctl32
either, it may not be listview related at all.
Think so to, there is support for it in the code, IIRC.