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