Marcel Taeumel uploaded a new version of ToolBuilder-Morphic to project The Trunk: http://source.squeak.org/trunk/ToolBuilder-Morphic-mt.341.mcz
==================== Summary ====================
Name: ToolBuilder-Morphic-mt.341 Author: mt Time: 20 April 2023, 4:51:05.321914 pm UUID: 045ae05b-fe2a-e749-b001-a08ffc80a669 Ancestors: ToolBuilder-Morphic-mt.340
Regarding tree widgets and selection update after type-in filters, document the challenge with prioritizing prefix matches. This is a feature we have in list widgets and it would be nice to have it also in tree widgets as it simplifies keyboard navigation.
=============== Diff against ToolBuilder-Morphic-mt.340 ===============
Item was changed: ----- Method: PluggableTreeMorph>>updateSelectionAfterFilter (in category 'updating') ----- updateSelectionAfterFilter "Filter has changed. The current selection might not be visible anymore. Update it accordingly."
| focus currentParent firstMatch | self hoveredMorph: nil. ((focus := self selectedMorph) notNil and: [focus isFilterMatch]) ifTrue: [^ self "no change, keep view stable"]. self filterMode = #siblings ifTrue: [ "Consider parent for local scope" firstMatch := (currentParent := self selectedParentMorph) ifNil: [self firstFilteredItem "i.e., any visible root"] ifNotNil: [:pm | pm firstVisibleChild]] ifFalse: [ "#all, #visible -- any filter match will do" firstMatch := focus ifNil: [self firstFilteredItem] ifNotNil: [:fm | self firstFilteredItemAfterSelection ifNil: [self firstFilteredItem]]]. + + self flag: #todo. "mt: Give priority to matching prefixes. This is tricky at the moment + because (1) #isFilterMatch has no access to the current filterOffsets until the first redraw + and (2) due to tab-split columns, a 'prefix' could as well be a within-match if a tab + character is directly in front of it. For now, leave it without this feature and expect + users to pre-attentively make out matching prefixes quickly while browsing the + filter results."
"Select the first match only if current selection does not match anymore." self setSelectedMorph: firstMatch. "New parent for #all or #visible possible" self scrollSelectionAndExtraIntoView. "Keep parent visible to provide context information. Ensure visibility of current selection." self scrollSelectionParentIntoView: (currentParent ifNil: [self selectedParentMorph]).!
packages@lists.squeakfoundation.org