[squeak-dev] The Trunk: ToolBuilder-Morphic-mt.308.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Mar 14 15:39:08 UTC 2022


Marcel Taeumel uploaded a new version of ToolBuilder-Morphic to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Morphic-mt.308.mcz

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

Name: ToolBuilder-Morphic-mt.308
Author: mt
Time: 14 March 2022, 4:39:06.716786 pm
UUID: bbb9bbdb-e30d-9243-8123-ea7b6a828e32
Ancestors: ToolBuilder-Morphic-mt.307

Fixes regression in expand button in list-chooser dialogs.

Allow longer text lines in pluggable dialogs (e.g., file-save dialog).

Make #softLineWrapAtVisualWrapBorder preference functional. Still disabled by default. Only for source-code panes.

Tweak #initialExtent in list-chooser dialogs.

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

Item was changed:
  ----- Method: DirectoryChooserDialog>>initialExtent (in category 'toolbuilder') -----
  initialExtent
  	"Since this is a single list it can be a bit narrower than a FileChooserDialog"
  
+ 	^ super initialExtent * (0.6 @ 1)!
- 	^ super initialExtent * (0.5 @ 1)!

Item was changed:
  ----- Method: ListChooser>>initialExtent (in category 'building') -----
  initialExtent
  
+ 	| listFont listStyle itemCount maxItemSize |
- 	| listFont itemCount maxItemSize cellSize |
  	listFont := Preferences standardListFont.
+ 	listStyle := listFont asNewTextStyle.
  	itemCount := items size.
+ 	maxItemSize := (items take: 15) inject: 0 into: [:max :item | max max: item asString size].
- 	maxItemSize := items inject: 0 into: [:max :item | max max: item asString size].
- 	cellSize := (listFont widthOf: $m) @ listFont height.
  
+ 	^ (listStyle compositionWidthFor: (maxItemSize min: 50 max: 35))
- 	^ ((maxItemSize min: 20 max: 10) * (listFont widthOf: $m))
  		@ ((ToolBuilder default listHeightFor: (itemCount min: 15 max: 5))
  			+ self searchBarHeight
  			+ ToolBuilder default dialogSpacing)!

Item was changed:
  ----- Method: ListMultipleChooser>>initialExtent (in category 'toolbuilder') -----
  initialExtent
  
+ 	| listFont listStyle itemCount maxItemSize |
- 	| listFont itemCount maxItemSize |
  	listFont := Preferences standardListFont.
+ 	listStyle := listFont asNewTextStyle.
  	itemCount := labels size.
+ 	maxItemSize := (labels take: 15) inject: 0 into: [:max :item | max max: item asString size].
- 	maxItemSize := labels inject: 0 into: [:max :item | max max: item asString size].
  	
+ 	^ (listStyle compositionWidthFor: (maxItemSize min: 50 max: 35))
- 	^ ((maxItemSize min: 20 max: 10) * (listFont widthOf: $m))
  		@ (ToolBuilder default listHeightFor: (itemCount min: 15 max: 5))!

Item was changed:
  ----- Method: MorphicToolBuilder>>buildPluggableCodePane: (in category 'widgets optional') -----
  buildPluggableCodePane: aSpec
  
  	| widget |
  	widget := super buildPluggableCodePane: aSpec.
  	
  	"Override code-specific default properties."
  	widget wantsWrapBorder: PluggableTextMorph visualWrapBorder.
+ 	PluggableTextMorph softLineWrapAtVisualWrapBorder
+ 		ifTrue: [widget numCharactersPerLine: PluggableTextMorph visualWrapBorderLimit].
  	widget wrapFlag: (aSpec softLineWrap ifNil: [PluggableTextMorph softLineWrap]).
  	^ widget!

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]].
  
+ 	"Increase the line width of the dialog's message to allow that longer messages accompany complex paneMorph contents."
+ 	widget messageMorph numCharactersPerLine: 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 changed:
  ----- Method: PluggableDialogWindow>>expandDialogPane (in category 'running') -----
  expandDialogPane
  	"Expand the dialog pane to its preferred extent, including the pane's extra layout inset used for grips. Then try again to move to the dialog's preferred position."
  
  	| extra |
  	self flag: #preferredExtentWorkaround. "mt: Working with a widget's min, max, and preferred extent is still very awkward using proportional layouts and layout frames. For now, approximate extra spacing to accommodate ListChooser and ListMultipleChooser only."
+ 	extra := PluggableListMorph listMargins.
+ 	extra := extra topLeft + extra bottomRight.
- 	extra := LazyListMorph new cellInset. extra := extra topLeft + extra bottomRight.
  
  	self paneMorph extent:
  		(self model preferredExtent
  			+ (self paneMorph layoutInset * 2) asPoint
  			+ extra).
  	self moveToPreferredPosition.!



More information about the Squeak-dev mailing list