[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