<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Hi Luciano,<br>
<br>
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.<br>
<br>
Folks, if you all agree, we'd integrate these.<br>
<br>
Thanks,<br>
<br>
On 6/17/2022 9:07 AM, Luciano Notarfrancesco via Cuis-dev wrote:
<blockquote
cite="mid:CAL5GDyqcu5OLYmb310dVMd30J6V-Xu2jBChsj-ZuXtncyeqmJQ@mail.gmail.com"
type="cite">
<meta http-equiv="Context-Type" content="text/html; charset=UTF-8">
<div>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:
<div>- 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);</div>
<div>- 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.</div>
<div><br>
</div>
<div>Let me know what you think. Thanks,</div>
<div>Luciano</div>
</div>
<br>
<div>
<div>On Fri, Jun 17, 2022 at 8:07 AM Luciano Notarfrancesco <<a
moz-do-not-send="true" href="mailto:luchiano@gmail.com">luchiano@gmail.com</a>>
wrote:<br>
</div>
<blockquote>
<div>Hi,
<div>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.</div>
<div>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.</div>
<div><br>
</div>
<div>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).</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>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.</div>
</div>
</blockquote>
</div>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a class="moz-txt-link-freetext" href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a>
<a class="moz-txt-link-freetext" href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a class="moz-txt-link-freetext" href="https://patents.justia.com/inventor/juan-manuel-vuletich">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a class="moz-txt-link-freetext" href="https://twitter.com/JuanVuletich">https://twitter.com/JuanVuletich</a></pre>
</body>
</html>