Scrollbars [Lancelot]
The most annoying (and at the same time thrilling) thing in developing Lancelot compared to developing normal Plasma applets/applications is the fact that everything has to be done from ground up. I have to reimplement every widget, and not use a QWidget through QGraphicsProxyWidget because the widgets I need either do not exist (Extender buttons), or don’t fit the no-click idea. The notable exception is that I do use Plasma::LineEdit.
In 1.0, you had the evil scroll buttons which were used to scroll the lists. Those things had a more than few usability issues which I’m not going to list here now (see the past posts, comments, and bugs at bko).
That is changing now. There is a lot underground work going on at the moment in Lancelot since the old list widgets are being split into a more than a few separated classes, or to be more exact, a completely new set of classes were developed that will mimic the behaviour of the old one. The new implementation is even API compatible with the old one at the moment, altohugh API will need some cleaning later on.
Why am I reimplementing something if I just want to mimic the old behaviour? The main reason was that the old ActionListView was hard to maintain, and it was even harder to add new features to it. There is no chance that keyboard support (for example) could be added to the old implementation.
Tech
Now, the Lancelot framework has something new to brag about.
First, there was a ScrollBar. And the ScrollBar worked well.
Then, there was ScrollPane that could hold in its arms classes of Scrollable type. It showed 0, 1 or 2 scrollbars depending on the size of the Scrollable. And it worked quite well with some glitches.
After that, CustomList came to this world. CustomList was made to be able to show CustomListItems produced by the CustomListItemFactory, one item below another. It could also squeeze or expand the items to fit them inside, behaving like its old brother, the old ActionListView.
Then, the CustomList implemented the rules in the book of Scrollable, and showed itself as a CustomListView.
This was only the beginning. Somebody had to use the power of CustomList to display the data models of Lancelot. And then came the ActionListView2.
So, as you can see instead of having just one class, which would be too obvious and simplistic, we now have a dozen (not all classes are mentioned here
).
Conclusion
As of the last commit, the ActionListView2 is used by default in Lancelot. (you can still re-enable the old one if you use Lancelot’s trunk on daily basis by commenting out the ‘#define LANCELOT_ACTION_LIST_VIEW2_OVERRIDE’ line in the libs/lancelot/widgets/ActionListView.h)
There really are a lot of bugs in the new implementation, but those will be straightened up soon. So, don’t file bugs that are related to the new lists, since they are known.
Cheers

















Are you planning on having no click scrolling at some point?
Comment by maninalift — 24 September 2008 @ 19:09
The no-click scrolling works as before – hover the up and down arrow.
Making the rest of scrollbar features no-click is not planned simply because I see no valid way of doing it.
Comment by Ivan Čukić — 25 September 2008 @ 08:38
Much nicer having scrollbars!
I now only wish lancelot could use some less space. That left icons are wasting too much pixels for being usable in an eeePC machine
Comment by Iuri Fiedoruk — 25 September 2008 @ 17:40
Thank you, it’s getting soooooooo sweeeet…
Comment by student — 30 September 2008 @ 01:32
[...] 2.0 roadmap that will be finished on time for 4.2 is the new ActionListView. You may recall mentioning the ActionListView2 in relation to the scrollbars that replaced the dreaded scroll buttons. Apart from the new scrolling mechanism, something else [...]
Pingback by Ivan Čukić » I’ve still got it! [Lancelot] — 5 November 2008 @ 18:18
Hi Ivan!
I found the no-click interface rather evil in one certaion use-case: I’ve set K4 to not confirm logout, and the default action is to power off the computer. This makes for nice right-clicking on the desktop, clickin “Log out”, and I’m set. However, in Lancelot I found it too easy to hover for a second over the “Log out” activater, and all of a sudden my machine went down. Have you considered an option like “Require click for logging out, even when the entire L is set to No-Click”?
Regards,
Rufus
Comment by rufusD — 6 November 2008 @ 09:18
@rufusD
No, I really haven’t considered making the configuration of no-click activation ‘by item’ – it would be too much. I have, though, considered making the logout window optional in a sense that the menu will show the options inside itself.
Comment by Ivan Čukić — 6 November 2008 @ 09:39