[Cuis-dev] PluggableListMorph siblings navigation and scrolling

Juan Vuletich JuanVuletich at zoho.com
Mon Jun 20 10:33:45 PDT 2022


Pushed to GitHub.

Thanks,

On 6/17/2022 4:37 PM, Luciano Notarfrancesco via Cuis-dev wrote:
> Cool, I think it’s best to use only left/right and shift-left/right 
> and remove tab.
>
> On Fri, 17 Jun 2022 at 9:54 PM Juan Vuletich <JuanVuletich at zoho.com 
> <mailto:JuanVuletich at zoho.com>> wrote:
>
>     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  <http://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
>


-- 
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/20220620/2ad15b97/attachment.htm>


More information about the Cuis-dev mailing list