[squeak-dev] The Trunk: Morphic-mt.2085.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Jan 30 13:48:47 UTC 2023
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)]] ].!
More information about the Squeak-dev
mailing list
|