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

commits at source.squeak.org commits at source.squeak.org
Wed Feb 9 15:58:02 UTC 2022


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

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

Name: Morphic-mt.1879
Author: mt
Time: 9 February 2022, 4:57:57.192854 pm
UUID: a8c18abf-2978-824a-8406-a91436f4d89f
Ancestors: Morphic-mt.1878

Fixes scaling issues in system windows and scroll panes. Fixes UI-theme update issues in tree widgets.

=============== Diff against Morphic-mt.1878 ===============

Item was changed:
  ----- Method: BorderedMorph>>addPaneHSplitterAtBottomOfRow: (in category 'resize handling') -----
  addPaneHSplitterAtBottomOfRow: someMorphs
  
+ 	| targetFrame targetY minX maxX splitter |
+ 	targetFrame := someMorphs first layoutFrame.
+ 	targetY := targetFrame bottomFraction.
- 	| targetY minX maxX splitter |
- 	targetY := someMorphs first layoutFrame bottomFraction.
  
  	minX := (someMorphs detectMin: [:each | each layoutFrame leftFraction]) layoutFrame leftFraction.
  	maxX := (someMorphs detectMax: [:each | each layoutFrame rightFraction]) layoutFrame rightFraction.
  
  	splitter := ProportionalSplitterMorph new beSplitsTopAndBottom; yourself.
  	splitter layoutFrame: (LayoutFrame
  		fractions: (minX @ targetY corner: maxX @ targetY)
+ 		offsets: (targetFrame leftOffset @ targetFrame bottomOffset
+ 			corner: targetFrame rightOffset @ 0)).
- 		offsets: (someMorphs first layoutFrame leftOffset @ self cellGap negated 
- 			corner: someMorphs first layoutFrame rightOffset @ 0)).
  
  	self addMorphBack: (splitter position: self position).!

Item was changed:
  ----- Method: BorderedMorph>>addPaneVSplitterAtRightOfColumn: (in category 'resize handling') -----
  addPaneVSplitterAtRightOfColumn: someMorphs
  
+ 	| targetFrame targetX minY maxY splitter |
+ 	targetFrame := someMorphs first layoutFrame.
+ 	targetX := targetFrame rightFraction.
- 	| targetX minY maxY splitter |
- 	targetX := someMorphs first layoutFrame rightFraction.
  	
  	minY := (someMorphs detectMin: [:each | each layoutFrame topFraction]) layoutFrame topFraction.
  	maxY := (someMorphs detectMax: [:each | each layoutFrame bottomFraction]) layoutFrame bottomFraction.
  	
  	splitter := ProportionalSplitterMorph new beSplitsLeftAndRight; yourself.
  	splitter layoutFrame: (LayoutFrame
  		fractions: (targetX @ minY corner: targetX @ maxY)
+ 		offsets: (targetFrame rightOffset @ (targetFrame topOffset)
+ 			corner: (0 @ (targetFrame bottomOffset)))).
- 		offsets: (0 @ (someMorphs first layoutFrame topOffset)
- 			corner: (self cellGap@ (someMorphs first layoutFrame bottomOffset)))).
  
  	self addMorphBack: (splitter position: self position).!

Item was changed:
  ----- Method: BorderedMorph>>cellGap: (in category 'layout properties') -----
  cellGap: aNumber
  
  	self cellGap = aNumber ifTrue: [^ self].
  
  	self removeCellGapFromLayoutFrames.
  	super cellGap: aNumber.
+ 	self addCellGapToLayoutFrames.
+ 	
+ 	(self wantsPaneSplitters and: [aNumber > 0])
+ 		ifTrue: [self addPaneSplitters]
+ 		ifFalse: [self removePaneSplitters].!
- 	self addCellGapToLayoutFrames.!

Item was added:
+ ----- Method: BorderedMorph>>displayScaleChangedBy: (in category 'display scale') -----
+ displayScaleChangedBy: factor
+ 	"The system's scale factor has changed. Try to scale the receiver so that it looks nice on the display. See DisplayScreen >> #uiScaleFactor:."
+ 	
+ 	self paneMorphs
+ 		select: [:ea | ea respondsTo: #displayScaleChangedBy:]
+ 		thenDo: [:ea | ea displayScaleChangedBy: factor].
+ 	
+ 	"Scale my bounds. Is okay even if I am layouted in my owner. Keep the center. If you also change the world bounds, make sure to move the receiver after this."
+ 	self bounds: ((self extent * factor) rounded center: self center).
+ 	
+ 	self removeGrips; removePaneSplitters.
+ 	self cellGap: 0.
+ 	
+ 	self paneMorphs do: [:ea | ea layoutFrame ifNotNil: [:frame |
+ 		frame topOffset: (frame topOffset * factor) rounded.
+ 		frame bottomOffset: (frame bottomOffset * factor) rounded.
+ 		frame leftOffset: (frame leftOffset * factor) rounded.
+ 		frame rightOffset: (frame rightOffset * factor) rounded]].
+ 
+ 	self wantsGrips ifTrue: [self addGrips].
+ 	self wantsPaneSplitters ifTrue: [self addPaneSplitters].!

Item was changed:
  ----- Method: BorderedMorph>>wantsGrips (in category 'resize handling') -----
  wantsGrips
  
+ 	^ self valueOfProperty: #allowGrips ifAbsent: [false]!
- 	^ self valueOfProperty: #allowGrips ifAbsent: [true]!

Item was changed:
  ----- Method: IndentingListItemMorph>>refresh (in category 'initialization') -----
  refresh
  
  	self contents: self getLabel.
+ 	self refreshIcon.
- 	icon := self getIcon ifNotNil: [:form | form scaleIconToDisplay].
  	
  	(self valueOfProperty: #wasRefreshed ifAbsent: [false]) ifFalse: [
  		self setProperty: #wasRefreshed toValue: true].!

Item was added:
+ ----- Method: IndentingListItemMorph>>refreshIcon (in category 'initialization') -----
+ refreshIcon
+ 
+ 	icon := self getIcon ifNotNil: [:form | form scaleIconToDisplay].!

Item was added:
+ ----- Method: ScrollPane>>displayScaleChangedBy: (in category 'display scale') -----
+ displayScaleChangedBy: factor
+ 	"Overwritten because the receiver's layout dictates some properties to its submorphs."
+ 
+ 	super displayScaleChangedBy: factor.	
+ 	self scrollBarThickness: (self scrollBarThickness * factor) rounded.!

Item was changed:
  ----- Method: SimpleHierarchicalListMorph>>applyUserInterfaceTheme (in category 'updating') -----
  applyUserInterfaceTheme
  
  	super applyUserInterfaceTheme.
+ 	
+ 	scroller submorphsDo: [:ea | ea refreshIcon].
  	self adjustSubmorphPositions.!

Item was added:
+ ----- Method: SystemWindow>>displayScaleChangedBy: (in category 'layout') -----
+ displayScaleChangedBy: factor
+ 	"Overwritten to also update the label area and reset the #cellGap (and #splitters)."
+ 	
+ 	super displayScaleChangedBy: factor.
+ 
+ 	self cellGap: ProportionalSplitterMorph gripThickness.
+ 	self layoutInset: ProportionalSplitterMorph gripThickness.
+ 	
+ 	self setFramesForLabelArea.
+ 	"self replaceBoxes."!



More information about the Squeak-dev mailing list