<div id="__MailbirdStyleContent" style="font-size: 12pt;font-family: calibri;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        At the level of ToolBuilder, one would rather have to specify a "tab order" and whether such a feature is enabled for a particular view or not. It would be like one or two additional fields in PluggableWidgetSpec. No need to talk about implementation details such as "siblings" at that abstract spec level.<div><br></div><div>Considering the actual implementation: there has been a "tabAmongFields", which might origin from Etoys. In the MorphicToolBuilder, I would simply add <b>event filters</b> for keyboard events at the level of <b>PluggablePanelMorph</b> and/or <b>SystemWindow</b>. You do not have to deal with implementation details in TextMorphs etc. If "tab" would be the key, "tab" would just not reach the TextMorph anymore. :-) ... off the top of my hat ... maybe like half a day work including tests. Not many new lines of code...</div><div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div>
                                        
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 07.11.2017 09:24:12 schrieb H. Hirzel <hannes.hirzel@gmail.com>:</p>A modest but very useful enhancements would be to have the TAB key<br>changing between panes in the Browser [1] as it is an often used tool.<br><br>The method<br>     PluggableListMorph specialKeyPressed: asciiValue  [3]<br><br>shows what is currently interpreted. However all the keystrokes apply<br>only locally to the list.<br><br>Next thing to find out is if it is possible in tools built with  the<br>ToolBuilder [2] framework how to get access to a sibling lists....<br><br><br>--Hannes<br><br><br>[1] Browser http://wiki.squeak.org/squeak/673<br><br>[2] ToolBuilder http://wiki.squeak.org/squeak/5607<br><br>[3] PluggableListMorph  http://wiki.squeak.org/squeak/2093<br><br>     specialKeyPressed: asciiValue<br>"A special key with the given ascii-value was pressed; dispatch it"<br>| oldSelection nextSelection max howManyItemsShowing |<br>(#(8 13) includes: asciiValue) ifTrue:<br>[ "backspace key - clear the filter, restore the list with the selection"<br>model okToChange ifFalse: [^ self].<br>self removeFilter.<br>priorSelection ifNotNil:<br>[ | prior |<br>prior := priorSelection.<br>priorSelection := self getCurrentSelectionIndex.<br>asciiValue = 8 ifTrue: [ self changeModelSelection: prior ] ].<br>^ self updateList ].<br>asciiValue = 27 ifTrue:<br>[" escape key"<br>^ ActiveEvent shiftPressed<br>ifTrue:<br>[ActiveWorld putUpWorldMenuFromEscapeKey]<br>ifFalse:<br>[self yellowButtonActivity: false]].<br><br>max := self maximumSelection.<br>max > 0 ifFalse: [^ self].<br>nextSelection := oldSelection := self selectionIndex.<br>asciiValue = 31 ifTrue:<br>[" down arrow"<br>nextSelection := oldSelection + 1.<br>nextSelection > max ifTrue: [nextSelection := 1]].<br>asciiValue = 30 ifTrue:<br>[" up arrow"<br>nextSelection := oldSelection - 1.<br>nextSelection < 1="" iftrue:="" [nextselection="" :=""><br>asciiValue = 1 ifTrue:<br>[" home"<br>nextSelection := 1].<br>asciiValue = 4 ifTrue:<br>[" end"<br>nextSelection := max].<br>howManyItemsShowing := self numSelectionsInView.<br>asciiValue = 11 ifTrue:<br>[" page up"<br>nextSelection := 1 max: oldSelection - howManyItemsShowing].<br>asciiValue = 12 ifTrue:<br>[" page down"<br>nextSelection := oldSelection + howManyItemsShowing min: max].<br>model okToChange ifFalse: [^ self].<br>"No change if model is locked"<br>oldSelection = nextSelection ifTrue: [^ self flash].<br>^ self changeModelSelection: (self modelIndexFor: nextSelection)<br><br><br><br>On 11/5/17, Marcel Taeumel <marcel.taeumel@hpi.de> wrote:<br>> Hi Bernhard,<br>><br>> unfortunately, keyboard interaction in Squeak's tools is rather plain and<br>> hard-coded. If you want to look into code, here are the places:<br>><br>> Editor, TextEditor, SmalltalkEditor >><br>> #initializeCmdKeyShortcuts<br>> #initializeShiftCmdKeyShortcuts<br>> #dispatchOnKeyboardEvent:<br>><br>> PasteUpMorph >> #filterEvent:for:<br>> DockingBarMorph >> #filterEvent:for:<br>> SystemWindow >> #filterEvent:for:<br>><br>> PluggableListMorph >><br>> #keyStroke:<br>> #previewKeystroke:<br>> #specialKeyPressed:<br>> #modifierKeyPressed:<br>><br>> PasteUpMorph >> #keystrokeInWorld:<br>><br>> All messages in the form "*Key:from:", which are usually the callbacks from<br>> PluggableListMorph.<br>><br>> Best,<br>> Marcel<br>> Am 04.11.2017 23:34:34 schrieb tim Rowledge <tim@rowledge.org>:<br>><br>>> On 26-10-2017, at 8:13 AM, Bernhard Pieber wrote:<br>>><br>>> Is there a way to move the focus between the different lists in a browser<br>>> by keyboard? I searched the mailing list and looked a bit in the code.<br>>> However, I did not find anything.<br>><br>> I haven’t found anything either; it would be useful thing to have.<br>><br>><br>> tim<br>> --<br>> tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim<br>> Everybody repeat after me....."We are all individuals."<br>><br>><br>><br>><br><br></tim@rowledge.org></marcel.taeumel@hpi.de>
                        </blockquote></div>