Marcel Taeumel uploaded a new version of Morphic to project The Trunk: http://source.squeak.org/trunk/Morphic-mt.2083.mcz
==================== Summary ====================
Name: Morphic-mt.2083 Author: mt Time: 30 January 2023, 1:09:02.561867 pm UUID: 6a7a9c44-e657-0442-b88a-25d3c49aa46d Ancestors: Morphic-mt.2082
In tree widgets, when collapsing a node via mouse-click, do update the selection if the current one gets lost.
Avoid jumpy view if intermediate selection is nil.
Remove some dead code.
=============== Diff against Morphic-mt.2082 ===============
Item was changed: ----- Method: SimpleHierarchicalListMorph>>mouseDown: (in category 'event handling') ----- mouseDown: evt
| aMorph selectors | aMorph := self itemFromPoint: evt position. evt yellowButtonPressed "First check for option (menu) click" ifTrue: [ (PluggableListMorph menuRequestUpdatesSelection and: [model okToChange]) ifTrue: [ aMorph == selectedMorph ifFalse: [self setSelectedMorph: aMorph]]. ^ self yellowButtonActivity: evt shiftPressed].
aMorph ifNil: [^ super mouseDown: evt].
(aMorph notNil and:[aMorph inToggleArea: (aMorph point: evt position from: self)]) + ifTrue: [ + self toggleExpandedState: aMorph event: evt. + self selectedMorph ifNil: [ + self setProperty: #changeSelectionOnMouseUp toValue: true. + self setProperty: #selectedMorph toValue: aMorph]. + ^ self]. - ifTrue: [^ self toggleExpandedState: aMorph event: evt]. PluggableListMorph highlightPreSelection ifTrue: [ aMorph highlightedForMouseDown: true. self setProperty: #highlightedMorph toValue: aMorph]. self setProperty: #changeSelectionOnMouseUp toValue: true. selectors := Array with: #click: with: (self doubleClickEnabled ifTrue: [#doubleClick:] ifFalse: [nil]) with: nil with: (self dragEnabled ifTrue:[#startDrag:] ifFalse:[nil]). evt hand waitForClicksOrDrag: self event: evt selectors: selectors threshold: HandMorph dragThreshold "pixels".!
Item was changed: ----- Method: SimpleHierarchicalListMorph>>mouseUp: (in category 'event handling') ----- mouseUp: event
| clickedMorph | model okToChange ifFalse: [^ self]. (clickedMorph := self itemFromPoint: event position) ifNil: [^ self]. (self valueOfProperty: #highlightedMorph ifAbsent: []) ifNotNil: [:m | m highlightedForMouseDown: false. self removeProperty: #highlightedMorph]. (self hasProperty: #changeSelectionOnMouseUp) ifFalse: [^ self] ifTrue: [self removeProperty: #changeSelectionOnMouseUp]. + + (self valueOfProperty: #selectedMorph) ifNotNil: [:m | + clickedMorph := m. + self removeProperty: #selectedMorph]. ((autoDeselect isNil or: [autoDeselect]) and: [clickedMorph == selectedMorph]) ifTrue: [self setSelectedMorph: nil] ifFalse: [self setSelectedMorph: clickedMorph].
event hand newKeyboardFocus: self. Cursor normal show.!
Item was changed: ----- Method: SimpleHierarchicalListMorph>>scrollSelectionIntoView (in category 'selection') ----- scrollSelectionIntoView + "Ensure that the user can see the current selection. If there is no current selection, keep the view stable." + + self selectedMorph ifNotNil: [:m | self scrollToShow: m bounds].! - - self selectedMorph - ifNil: [self scrollToTop] - ifNotNil: [:m | self scrollToShow: m bounds].!
Item was changed: ----- Method: SimpleHierarchicalListMorph>>toggleExpandedState:event: (in category 'events') ----- toggleExpandedState: aMorph event: event + + aMorph toggleExpandedState. - | oldState | - "self setSelectedMorph: aMorph." - event yellowButtonPressed ifTrue: [ - oldState := aMorph isExpanded. - scroller submorphs copy do: [ :each | - (each canExpand and: [each isExpanded = oldState]) ifTrue: [ - each toggleExpandedState. - ]. - ]. - ] ifFalse: [ - aMorph toggleExpandedState. - ]. self adjustSubmorphPositions. !
packages@lists.squeakfoundation.org