[Cuis-dev] PluggableListMorph siblings navigation and scrolling

Juan Vuletich JuanVuletich at zoho.com
Fri Jun 17 07:54:05 PDT 2022


Hi Luciano,

I really like this. The attach includes two further tweaks. One is to 
enable shift-arrows to change focus. I find this nicer especially for 
HierarchicalList. I also made lists to auto select the first item if 
none selected.

Folks, if you all agree, we'd integrate these.

Thanks,

On 6/17/2022 9:07 AM, Luciano Notarfrancesco via Cuis-dev wrote:
> Here's an updated version. I added back the feature to scroll 
> siblings, because it turns out the Package List tool still needs it. 
> But this time I used a property instead of an instance variable, and I 
> set it up by calling >>#scrollSiblings: with a collection of siblings 
> to scroll  with the receiver instead of relying on the original 
> leftSibling and rightSibling instance variables. The biggest changes 
> in this change set are:
> - rework of sibling navigation using a more general approach instead 
> of leftSibling and rightSibling (navigate all morphs that handle 
> keyboard focus in the same system window using left/right arrows and 
> TAB/SHIFT-TAB, works for PluggableListMorph and HierarchicalListMorph 
> and be be easily extended to other morphs);
> - change in Change Sorter and Package List to show the dirty flag as 
> an asterisk in the change set or package name instead of using an 
> extra list.
>
> Let me know what you think. Thanks,
> Luciano
>
> On Fri, Jun 17, 2022 at 8:07 AM Luciano Notarfrancesco 
> <luchiano at gmail.com <mailto:luchiano at gmail.com>> wrote:
>
>     Hi,
>     After we changed the browser to show system categories as a tree
>     (or forest actually) we partially lost the feature to navigate
>     between the lists with the arrow keys. This is because
>     HierarchicalListMorph uses the left-right arrow keys to navigate
>     the tree.
>     I've been experimenting with ideas to add back this feature, and
>     this is what I have so far. It's just an experiment, I'd like to
>     know what other people think about this change.
>
>     Basically, I got rid of the "left/right siblings concept" and
>     instead I use the right-left arrows (or TAB and SHIFT-TAB) to
>     navigate between all morphs in the active window that handle
>     keyboard focus. This simplifies the code in PluggableListMorph and
>     the methods that use it, since they don't need to explicitly set
>     siblings. The behavior is slightly different from the original
>     implementation, I'm not sure if it would bother anyone that is
>     already used to the original behavior, let me know what you think.
>     With this change set, the keyboard navigation in the browser works
>     again, with the caveat that you have to use TAB and SHIFT-TAB
>     instead of left-right (or we should change the handler of
>     left-right in HierarchicalListMorph to use some other keys).
>
>     While testing this I found a little bug: for some reason,
>     SHIFT-TAB is sent twice unless SHIFT is unpressed before
>     unpressing TAB. I have to investigate this further, but I think it
>     is a bug in the event dispatching mechanism, not a bug in my code.
>
>     Also, I got rid of the feature to scroll two lists together. I
>     think this would be better implemented with some sort of
>     PluggableMultiColumnListMorph or something like that. The only
>     tools that used this functionality are the Change Sorter and the
>     Package List. They used it to show a "dirty flag" (i.e., whether a
>     change set or package has unsaved changes). Instead of showing
>     this dirty flag in a list, I show it with an asterisk at the
>     begining of the change set or package name. I like it because IMO
>     it looks better than the original implementation, wastes less real
>     estate, it is a well known UI pattern, and the code is simpler.
>
>     Let me know what you think, whether I should continue in this
>     direction and test this code better in order to integrate it, or
>     if you think this change is a bad idea.
>


-- 
Juan Vuletich
www.cuis-smalltalk.org
https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
https://github.com/jvuletich
https://www.linkedin.com/in/juan-vuletich-75611b3
https://independent.academia.edu/JuanVuletich
https://www.researchgate.net/profile/Juan-Vuletich
https://patents.justia.com/inventor/juan-manuel-vuletich
https://twitter.com/JuanVuletich

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220617/ed57e913/attachment.htm>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 5304-FurtherTweaks-JuanVuletich-2022Jun17-11h43m-jmv.001.cs.st
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220617/ed57e913/attachment.ksh>


More information about the Cuis-dev mailing list