Tobias Pape uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-topa.1092.mcz==================== Summary ====================
Name: Morphic-topa.1092
Author: topa
Time: 2 March 2016, 12:47:32.674693 am
UUID: c9c63a6f-3d27-472a-bb9d-b51d1f3eb218
Ancestors: Morphic-topa.1091
Adopt Tree (up/down/home/pg up/pg down) key handling to be more similar to List key handling.
=============== Diff against Morphic-topa.1091 ===============
Item was changed:
----- Method: SimpleHierarchicalListMorph>>arrowKey: (in category 'keyboard navigation') -----
arrowKey: asciiValue
"Handle a keyboard navigation character. Answer true if handled, false if not."
+ | keyEvent max oldSelection nextSelection howManyItemsShowing |
- | keyEvent |
keyEvent := asciiValue.
+ max := self maximumSelection.
+ nextSelection := oldSelection := self getSelectionIndex.
keyEvent = 31 ifTrue:["down"
+ nextSelection :=oldSelection + 1.
+ nextSelection > max ifTrue: [nextSelection := 1]].
- self setSelectionIndex: self getSelectionIndex+1.
- ^true].
keyEvent = 30 ifTrue:["up"
+ nextSelection := oldSelection - 1.
+ nextSelection < 1 ifTrue: [nextSelection := max]].
- self setSelectionIndex: (self getSelectionIndex-1 max: 1).
- ^true].
keyEvent = 1 ifTrue: ["home"
+ nextSelection := 1].
- self setSelectionIndex: 1.
- ^true].
keyEvent = 4 ifTrue: ["end"
+ nextSelection := max].
+ howManyItemsShowing := self numSelectionsInView.
- self setSelectionIndex: scroller submorphs size.
- ^true].
keyEvent = 11 ifTrue: ["page up"
+ nextSelection := 1 max: oldSelection - howManyItemsShowing].
- self setSelectionIndex: (self getSelectionIndex - self numSelectionsInView max: 1).
- ^true].
keyEvent = 12 ifTrue: ["page down"
+ nextSelection := oldSelection + howManyItemsShowing min: max].
+
+ nextSelection = oldSelection ifFalse: [
+ self setSelectionIndex: nextSelection.
+ ^ true].
+
- self setSelectionIndex: self getSelectionIndex + self numSelectionsInView.
- ^true].
keyEvent = 29 ifTrue:["right"
selectedMorph ifNotNil:[
(selectedMorph canExpand and:[selectedMorph isExpanded not])
ifTrue:[self toggleExpandedState: selectedMorph]
ifFalse:[self setSelectionIndex: self getSelectionIndex+1].
].
^true].
keyEvent = 28 ifTrue:["left"
selectedMorph ifNotNil:[
(selectedMorph isExpanded)
ifTrue:[self toggleExpandedState: selectedMorph]
ifFalse:[self setSelectionIndex: (self getSelectionIndex-1 max: 1)].
].
^true].
^false!