Marcel Taeumel uploaded a new version of Morphic to project The Trunk: http://source.squeak.org/trunk/Morphic-mt.2085.mcz
==================== Summary ====================
Name: Morphic-mt.2085 Author: mt Time: 30 January 2023, 2:48:44.347867 pm UUID: 97957eba-0eae-4f48-bcbf-094ed735dd4f Ancestors: Morphic-mt.2084
In tree widgets, fix filter indication for that "trailing-tab situation" ... may need another tweak ... those "tab-separated values" can be tricky. Hmm...
=============== Diff against Morphic-mt.2084 ===============
Item was changed: ----- Method: IndentingListItemMorph>>drawLabelInColumnsOn:in: (in category 'drawing') ----- drawLabelInColumnsOn: aCanvas in: drawBounds "Draw the receiver appearing in multiple columns. Use TAB character to move between columns." | columnScanner columnLeft columnRect columnData updateFilter | self assert: [container columns size > 1].
columnScanner := ReadStream on: contents asString. "Update filter matches" updateFilter := backgroundColor notNil and: [filterOffsets isNil]. filterOffsets ifNil: [filterOffsets := OrderedCollection new].
1 to: container columns size do: [ :column | | columnWidth | "Compute first/next column offset." column = 1 ifTrue: [columnLeft := drawBounds left] ifFalse: [columnLeft := columnRect right + 5 px]. "Draw icon." column = self class iconColumnIndex ifTrue: [ icon ifNotNil: [ aCanvas translucentImage: icon at: columnLeft @ (self top + (self height - icon height // 2)). columnLeft := columnLeft + icon width + 2 px]]. "Compute drawing bounds for label portion." columnWidth := self widthOfColumn: column. column = 1 ifTrue: [ "Reduce width by indentation present in first column only" columnWidth := columnWidth - (drawBounds left - self left) + self hMargin]. columnRect := columnLeft @ drawBounds top extent: columnWidth @ drawBounds height. columnData := columnScanner upTo: Character tab. "Draw label portion." columnData ifNotEmpty: [ aCanvas drawString: columnData in: columnRect font: self fontToUse color: self colorToUse. updateFilter ifTrue: [ (container shouldFilterColumnIndex: column) ifTrue: [filterOffsets addAll: (self getFilterOffsetsFor: columnData column: column)]] ] ].
"Handle trailing TAB issue in string representation." + columnScanner upToEnd ifNotEmpty: [:rest | | fullColumnData | - columnScanner upToEnd ifNotEmpty: [:rest | columnRect := columnLeft + (self fontToUse widthOfString: columnData) @ drawBounds top extent: columnRect extent. + fullColumnData := columnData, String tab, rest. columnData := String tab, rest. aCanvas drawString: columnData in: columnRect font: self fontToUse color: self colorToUse. updateFilter ifTrue: [ (container shouldFilterColumnIndex: container columns size) + ifTrue: [ + self flag: #todo. "mt: Avoid duplicate filter indication." + filterOffsets addAll: (self getFilterOffsetsFor: fullColumnData column: container columns size)]] ].! - ifTrue: [filterOffsets addAll: (self getFilterOffsetsFor: columnData column: container columns size)]] ].!
packages@lists.squeakfoundation.org