[squeak-dev] The Inbox: ToolBuilder-Morphic-ct.317.mcz

commits at source.squeak.org commits at source.squeak.org
Thu May 19 13:47:50 UTC 2022

A new version of ToolBuilder-Morphic was added to project The Inbox:

==================== Summary ====================

Name: ToolBuilder-Morphic-ct.317
Author: ct
Time: 19 May 2022, 3:47:49.33378 pm
UUID: 5229468a-f32e-ea4a-89f6-fde8487dda34
Ancestors: ToolBuilder-Morphic-mt.316

Proposal: Do not limit the average line length of a pluggable dialog window's message unnecessarily when a larger initial extent was specified.

For later, it would be nice if we had normal window grips instead and the message text would always wrap automatically.

Is there a better pattern for computing the inverse of averageLineLength?

=============== Diff against ToolBuilder-Morphic-mt.316 ===============

Item was changed:
  ----- Method: MorphicToolBuilder>>buildPluggableDialog: (in category 'widgets optional') -----
  buildPluggableDialog: aSpec
  	| widget |
  	widget := self dialogClass new.
  	self register: widget id: aSpec name.
  	widget model: aSpec model.
  	"Set child dependent layout properties. The pane morph holds the special contents."
  	widget paneMorph wantsPaneSplitters: (aSpec wantsResizeHandles ifNil: [true]).
  	self setLayoutHintsFor: widget paneMorph spec: aSpec.
  	widget paneMorph layoutInset: (aSpec padding ifNil: [self dialogPadding]).
  	widget morphicLayerNumber: widget class dialogLayer.
  	"Performance. Flip the #wantsPaneSplitters flag only after all children where added."
  	widget paneMorph cellGap: 0.
  	widget paneMorph wantsPaneSplitters: false; wantsGrips: false.
  	widget paneMorph removePaneSplitters; removeGrips.
  	"Now create the children."
  	panes := OrderedCollection new.
  	aSpec children isSymbol
  		ifTrue: [
  			widget getChildrenSelector: aSpec children.
  			widget update: aSpec children]
  		ifFalse: [
  			self buildAll: aSpec children in: widget paneMorph].
  	"Avoid strange behavior in #addMorph:fullFrame:"
  	widget paneMorph cellGap: (aSpec spacing ifNil: [self dialogSpacing]).
  	widget paneMorph wantsPaneSplitters: (aSpec wantsResizeHandles ifNil: [true]).
  	widget paneMorph wantsPaneSplitters ifTrue: [
  		widget paneMorph wantsGrips: true.	
  		widget paneMorph addPaneSplitters; addCornerGrips"; addEdgeGrips".
  		widget paneMorph grips do: [:ea | ea showHandle: true]].
+ 	widget updateAverageLineLength.
- 	"Increase the line width of the dialog's message to allow that longer messages accompany complex paneMorph contents."
- 	widget messageMorph averageLineLength: 65.
  	"Now create the buttons."
  	aSpec buttons isSymbol
  		ifTrue: [
  			widget getButtonsSelector: aSpec buttons.
  			widget update: aSpec buttons]
  		ifFalse: [
  			self buildAll: aSpec buttons in: widget buttonRowMorph.
  			widget updateButtonProperties].
  	aSpec title ifNotNil: [:label |
  		label isSymbol 
  			ifTrue:[widget getTitleSelector: label; update: label]
  			ifFalse:[widget title: label]].
  	aSpec message ifNotNil: [:label |
  		label isSymbol 
  			ifTrue:[widget getMessageSelector: label; update: label]
  			ifFalse:[widget message: label]].
  	"Interaction behavior."
  	aSpec autoCancel ifNotNil: [:b | widget autoCancel: b].
  	aSpec exclusive ifNotNil: [:b | widget exclusive: b].
  	widget closeDialogSelector: aSpec closeAction.
  	self buildHelpFor: widget spec: aSpec. 
  	"Everything is shrink-wrapped around the pane morph."
  	widget paneMorph extent: (aSpec extent ifNil:[widget initialExtent])
  		+ (widget paneMorph layoutInset * 2) asPoint.
  	^ widget!

Item was added:
+ ----- Method: PluggableDialogWindow>>updateAverageLineLength (in category 'updating') -----
+ updateAverageLineLength
+ 	"Increase the line width of the dialog's message to allow that longer messages accompany complex paneMorph contents."
+ 	| message |
+ 	message := self messageMorph.
+ 	message averageLineLength:
+ 		(65 max:
+ 			(self initialExtent x / (message textStyle compositionWidthFor: 1))).!

More information about the Squeak-dev mailing list