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

commits at source.squeak.org commits at source.squeak.org
Wed Jan 23 12:37:43 UTC 2019

Marcel Taeumel uploaded a new version of ToolBuilder-Morphic to project The Trunk:

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

Name: ToolBuilder-Morphic-mt.224
Author: mt
Time: 23 January 2019, 1:37:44.247984 pm
UUID: ff9b83dd-1f7c-844f-b104-e1b6890461a0
Ancestors: ToolBuilder-Morphic-mt.223

For (pluggable) scroll panes through the tool builder, use optional scroll bars for both dimensions now. Ignore system-wide preferences because those usually address code-editing tools, not arbitrary programs. 

Note that we might want to rename those preferences (#alwaysShowVScrollbar, #alwaysHideHScrollbar, etc.) and move their usages out of ScrollPane into the #buildWith: implementations of our tools (CodeHolder, Debugger, etc.). You need to know about the specific contents of those scroll panes to make such hide/show decisions.

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

Item was changed:
  ----- Method: MorphicToolBuilder>>buildPluggableScrollPane: (in category 'widgets optional') -----
  buildPluggableScrollPane: spec
  	| widget panel |
  	widget := self scrollPaneClass new.
  	widget model: spec model.
  	self register: widget id: spec name.
  	spec children
  		ifNotNil: [:obj |
  			"Create panel morph to scroll it."
  			panel := self pluggablePanelSpec new
  				model: spec model;
  				children: obj;
  				layout: spec layout;
  				horizontalResizing: (spec layout == #proportional ifTrue: [#rigid] ifFalse: [#shrinkWrap]);
  				verticalResizing: (spec layout == #proportional ifTrue: [#rigid] ifFalse: [#shrinkWrap]);
  				buildWith: self.
  			widget morph: panel.
  		ifNil: [spec morph
  			ifNotNil: [:m | widget morph: m]
  			ifNil: [widget morphClass: spec morphClass]].
  	self setFrame: spec frame in: widget.
  	self setLayoutHintsFor: widget spec: spec.
  	parent ifNotNil: [self add: widget to: parent].
  	spec borderWidth ifNotNil: [:w | widget borderWidth: w].
+ 	"Set scroll bar policies. By default, use scroll bars only when needed. Do not follow system-wide preferences here."
+ 	spec hScrollBarPolicy
+ 		caseOf: {
- 	"Override default scroll bar policies if needed. Widget will use preference values otherwise."
- 	spec hScrollBarPolicy ifNotNil: [:policy |
- 		policy caseOf: {
  			[#always] -> [widget alwaysShowHScrollBar].
  			[#never] -> [widget hideHScrollBarIndefinitely].
+ 			[#whenNeeded] -> [widget showHScrollBarOnlyWhenNeeded] }
+ 		otherwise: [widget showHScrollBarOnlyWhenNeeded].
+ 	spec vScrollBarPolicy
+ 		caseOf: {
- 			[#whenNeeded] -> [widget showHScrollBarOnlyWhenNeeded]}].
- 	spec vScrollBarPolicy ifNotNil: [:policy | 
- 		policy caseOf: {
  			[#always] -> [widget alwaysShowVScrollBar].
  			[#never] -> [widget hideVScrollBarIndefinitely].
+ 			[#whenNeeded] -> [widget showVScrollBarOnlyWhenNeeded] }
+ 		otherwise: [widget showVScrollBarOnlyWhenNeeded].
- 			[#whenNeeded] -> [widget showVScrollBarOnlyWhenNeeded]}].
  	^ widget!

More information about the Squeak-dev mailing list