[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
|