[squeak-dev] The Trunk: Morphic-mt.948.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Apr 29 16:08:53 UTC 2015
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.948.mcz
==================== Summary ====================
Name: Morphic-mt.948
Author: mt
Time: 29 April 2015, 6:08:09.041 pm
UUID: 5f2bc0e4-93cb-4841-b724-e03b107d5fcf
Ancestors: Morphic-kfr.947
Fixed several layouting issues regarding splitters, grips, panes, and windows.
=============== Diff against Morphic-kfr.947 ===============
Item was changed:
+ ----- Method: BorderedMorph>>addCornerGrips (in category 'resize handling') -----
- ----- Method: BorderedMorph>>addCornerGrips (in category 'lookenhancements') -----
addCornerGrips
self
addMorphBack: (TopLeftGripMorph new target: self; position: self position).
self
addMorphBack: (TopRightGripMorph new target: self; position: self position).
self
addMorphBack: (BottomLeftGripMorph new target: self;position: self position).
self
addMorphBack: (BottomRightGripMorph new target: self;position: self position)!
Item was changed:
+ ----- Method: BorderedMorph>>addEdgeGrips (in category 'resize handling') -----
- ----- Method: BorderedMorph>>addEdgeGrips (in category 'lookenhancements') -----
addEdgeGrips
"Add resizers along the four edges of the receiver"
self
addMorphBack: (TopGripMorph new target: self;position: self position).
self
addMorphBack: (BottomGripMorph new target: self;position: self position).
self
addMorphBack: (RightGripMorph new target: self;position: self position).
self
addMorphBack: (LeftGripMorph new target: self;position: self position).!
Item was added:
+ ----- Method: BorderedMorph>>addMorph:fullFrame: (in category 'resize handling') -----
+ addMorph: aMorph fullFrame: aLayoutFrame
+ "Add aMorph according to aLayoutFrame."
+
+ self cellInset > 0 ifTrue: [
+ | left right bottom top spacing |
+
+ spacing := self cellInset.
+ left := aLayoutFrame leftOffset ifNil: [0].
+ right := aLayoutFrame rightOffset ifNil: [0].
+
+ bottom := aLayoutFrame bottomOffset ifNil: [0].
+ top := aLayoutFrame topOffset ifNil: [0].
+
+ "Add a spacing to the frame if it is not top or leftmost."
+ aLayoutFrame leftFraction = 0
+ ifFalse: [left := left + spacing]
+ ifTrue: [
+ "Expect another, resizable widget besides me if I have a fixed width."
+ aLayoutFrame hasFixedWidth ifTrue: [right := right - spacing]].
+ aLayoutFrame topFraction = 0
+ ifFalse: [top := top + spacing]
+ ifTrue: [
+ "Expect another, resizable widget besides me if I have a fixed height."
+ aLayoutFrame hasFixedHeight ifTrue: [bottom := bottom - spacing]].
+
+ aLayoutFrame
+ topOffset: top;
+ bottomOffset: bottom;
+ leftOffset: left;
+ rightOffset: right].
+
+ super addMorph: aMorph fullFrame: aLayoutFrame.
+
+ self wantsPaneSplitters ifTrue: [self addPaneSplitters].!
Item was changed:
+ ----- Method: BorderedMorph>>addPaneHSplitterBetween:and: (in category 'resize handling') -----
- ----- Method: BorderedMorph>>addPaneHSplitterBetween:and: (in category 'lookenhancements') -----
addPaneHSplitterBetween: topMorph and: bottomMorphs
| targetY minX maxX splitter |
targetY := topMorph layoutFrame bottomFraction.
minX := (bottomMorphs detectMin: [:each | each layoutFrame leftFraction]) layoutFrame leftFraction.
maxX := (bottomMorphs detectMax: [:each | each layoutFrame rightFraction]) layoutFrame rightFraction.
splitter := ProportionalSplitterMorph new beSplitsTopAndBottom; yourself.
splitter layoutFrame: (LayoutFrame
fractions: (minX @ targetY corner: maxX @ targetY)
+ offsets: (((topMorph layoutFrame leftOffset ifNil: [0]) @ 0
+ corner: (topMorph layoutFrame rightOffset ifNil: [0]) @ AbstractResizerMorph gripThickness)
+ translateBy: 0 @ (topMorph layoutFrame bottomOffset ifNil: [0]))).
- offsets: (((topMorph layoutFrame leftOffset ifNil: [0]) @ 0 corner: (topMorph layoutFrame rightOffset ifNil: [0]) @ AbstractResizerMorph gripThickness) translateBy: 0 @ (topMorph layoutFrame bottomOffset ifNil: [0]))).
self addMorphBack: (splitter position: self position).!
Item was added:
+ ----- Method: BorderedMorph>>addPaneHSplitters (in category 'resize handling') -----
+ addPaneHSplitters
+
+ | remaining targetY sameY |
+ remaining := self paneMorphs reject: [:each |
+ each layoutFrame bottomFraction = 1
+ or: [each layoutFrame hasFixedHeight]].
+ [remaining notEmpty] whileTrue:
+ [targetY := remaining first layoutFrame bottomFraction.
+ sameY := self paneMorphs select: [:each | each layoutFrame bottomFraction = targetY].
+ self addPaneHSplitterBetween: remaining first and: sameY.
+ remaining := remaining copyWithoutAll: sameY]!
Item was changed:
+ ----- Method: BorderedMorph>>addPaneSplitters (in category 'resize handling') -----
- ----- Method: BorderedMorph>>addPaneSplitters (in category 'lookenhancements') -----
addPaneSplitters
+
- | splitter remaining target targetX sameX minY maxY targetY sameY minX maxX |
self removePaneSplitters.
+
+ self addPaneVSplitters.
+ self addPaneHSplitters.
- self removeCornerGrips.
+ self linkSubmorphsToSplitters!
- remaining := submorphs reject: [:each | each layoutFrame rightFraction = 1].
- [remaining notEmpty] whileTrue:
- [target := remaining first.
- targetX := target layoutFrame rightFraction.
- sameX := submorphs select: [:each | each layoutFrame rightFraction = targetX].
- minY := (sameX detectMin: [:each | each layoutFrame topFraction]) layoutFrame topFraction.
- maxY := (sameX detectMax: [:each | each layoutFrame bottomFraction]) layoutFrame bottomFraction.
- splitter := ProportionalSplitterMorph new.
- splitter layoutFrame: (LayoutFrame
- fractions: (targetX @ minY corner: targetX @ maxY)
- offsets: ((0 @ (target layoutFrame topOffset ifNil: [0]) corner: 4 @ (target layoutFrame bottomOffset ifNil: [0])) translateBy: (target layoutFrame rightOffset ifNil: [0]) @ 0)).
- self addMorphBack: (splitter position: self position).
- remaining := remaining copyWithoutAll: sameX].
-
- remaining := submorphs copy reject: [:each | each layoutFrame bottomFraction = 1].
- [remaining notEmpty]
- whileTrue: [target := remaining first.
- targetY := target layoutFrame bottomFraction.
- sameY := submorphs select: [:each | each layoutFrame bottomFraction = targetY].
- minX := (sameY detectMin: [:each | each layoutFrame leftFraction]) layoutFrame leftFraction.
- maxX := (sameY detectMax: [:each | each layoutFrame rightFraction]) layoutFrame rightFraction.
- splitter := ProportionalSplitterMorph new beSplitsTopAndBottom; yourself.
- splitter layoutFrame: (LayoutFrame
- fractions: (minX @ targetY corner: maxX @ targetY)
- offsets: (((target layoutFrame leftOffset ifNil: [0]) @ 0 corner: (target layoutFrame rightOffset ifNil: [0]) @ 4) translateBy: 0 @ (target layoutFrame bottomOffset ifNil: [0]))).
- self addMorphBack: (splitter position: self position).
- remaining := remaining copyWithoutAll: sameY].
-
- self linkSubmorphsToSplitters.
- self splitters do: [:each | each comeToFront].
- !
Item was changed:
+ ----- Method: BorderedMorph>>addPaneVSplitterBetween:and: (in category 'resize handling') -----
- ----- Method: BorderedMorph>>addPaneVSplitterBetween:and: (in category 'lookenhancements') -----
addPaneVSplitterBetween: leftMorph and: rightMorphs
| targetX minY maxY splitter |
targetX := leftMorph layoutFrame rightFraction.
minY := (rightMorphs detectMin: [:each | each layoutFrame topFraction]) layoutFrame topFraction.
maxY := (rightMorphs detectMax: [:each | each layoutFrame bottomFraction]) layoutFrame bottomFraction.
splitter := ProportionalSplitterMorph new.
splitter layoutFrame: (LayoutFrame
fractions: (targetX @ minY corner: targetX @ maxY)
offsets: ((0 @ (leftMorph layoutFrame topOffset ifNil: [0]) corner: (AbstractResizerMorph gripThickness@ (leftMorph layoutFrame bottomOffset ifNil: [0]))) translateBy: (leftMorph layoutFrame rightOffset ifNil: [0]) @ 0)).
self addMorphBack: (splitter position: self position).!
Item was added:
+ ----- Method: BorderedMorph>>addPaneVSplitters (in category 'resize handling') -----
+ addPaneVSplitters
+
+ | remaining targetX sameX |
+ remaining := self paneMorphs reject: [:each |
+ each layoutFrame rightFraction = 1
+ or: [each layoutFrame hasFixedWidth]].
+ [remaining notEmpty] whileTrue:
+ [targetX := remaining first layoutFrame rightFraction.
+ sameX := self paneMorphs select: [:each | each layoutFrame rightFraction = targetX].
+ self addPaneVSplitterBetween: remaining first and: sameX.
+ remaining := remaining copyWithoutAll: sameX]!
Item was changed:
+ ----- Method: BorderedMorph>>linkSubmorphsToSplitters (in category 'resize handling') -----
- ----- Method: BorderedMorph>>linkSubmorphsToSplitters (in category 'lookenhancements') -----
linkSubmorphsToSplitters
+ self splitters do: [:splitter |
+ splitter splitsTopAndBottom ifTrue: [
+ self submorphsDo: [:morph |
+ ((morph ~= splitter
+ and: [morph layoutFrame bottomFraction = splitter layoutFrame topFraction])
+ and: [morph layoutFrame hasFixedHeight not
+ or: [(morph layoutFrame topOffset ifNil: [0]) < 0]])
+ ifTrue: [splitter addLeftOrTop: morph].
+ ((morph ~= splitter
+ and: [morph layoutFrame topFraction = splitter layoutFrame bottomFraction])
+ and: [morph layoutFrame hasFixedHeight not
+ or: [(morph layoutFrame bottomOffset ifNil: [0]) > 0]])
+ ifTrue: [splitter addRightOrBottom: morph]]].
+ splitter splitsLeftAndRight ifTrue: [
+ self submorphsDo: [:morph |
+ ((morph ~= splitter
+ and: [morph layoutFrame rightFraction = splitter layoutFrame leftFraction])
+ and: [morph layoutFrame hasFixedWidth not
+ or: [(morph layoutFrame leftOffset ifNil: [0]) < 0]])
+ ifTrue: [splitter addLeftOrTop: morph].
+ ((morph ~= splitter
+ and: [morph layoutFrame leftFraction = splitter layoutFrame rightFraction])
+ and: [morph layoutFrame hasFixedWidth not
+ or: [(morph layoutFrame rightOffset ifNil: [0]) > 0]])
+ ifTrue: [splitter addRightOrBottom: morph]]]]!
- self splitters do:
- [:each |
- each splitsTopAndBottom
- ifTrue:
- [self submorphsDo:
- [:eachMorph |
- (eachMorph ~= each and: [eachMorph layoutFrame bottomFraction = each layoutFrame topFraction]) ifTrue: [each addLeftOrTop: eachMorph].
- (eachMorph ~= each and: [eachMorph layoutFrame topFraction = each layoutFrame bottomFraction]) ifTrue: [each addRightOrBottom: eachMorph]]]
- ifFalse:
- [self submorphsDo:
- [:eachMorph |
- (eachMorph ~= each and: [eachMorph layoutFrame rightFraction = each layoutFrame leftFraction]) ifTrue: [each addLeftOrTop: eachMorph].
- (eachMorph ~= each and: [eachMorph layoutFrame leftFraction = each layoutFrame rightFraction]) ifTrue: [each addRightOrBottom: eachMorph]]]]!
Item was added:
+ ----- Method: BorderedMorph>>paneMorphs (in category 'resize handling') -----
+ paneMorphs
+
+ ^ self submorphs copyWithoutAll: self splitters!
Item was changed:
+ ----- Method: BorderedMorph>>removeCornerGrips (in category 'resize handling') -----
- ----- Method: BorderedMorph>>removeCornerGrips (in category 'lookenhancements') -----
removeCornerGrips
| corners |
corners := self submorphsSatisfying: [:each | each isKindOf: CornerGripMorph].
corners do: [:each | each delete]!
Item was changed:
+ ----- Method: BorderedMorph>>removePaneSplitters (in category 'resize handling') -----
- ----- Method: BorderedMorph>>removePaneSplitters (in category 'lookenhancements') -----
removePaneSplitters
self splitters do: [:each | each delete]!
Item was changed:
+ ----- Method: BorderedMorph>>splitters (in category 'resize handling') -----
- ----- Method: BorderedMorph>>splitters (in category 'lookenhancements') -----
splitters
^ self submorphsSatisfying: [:each | each isKindOf: ProportionalSplitterMorph]!
Item was added:
+ ----- Method: BorderedMorph>>wantsPaneSplitters (in category 'resize handling') -----
+ wantsPaneSplitters
+
+ ^ self valueOfProperty: #allowPaneSplitters ifAbsent: [false]!
Item was added:
+ ----- Method: BorderedMorph>>wantsPaneSplitters: (in category 'resize handling') -----
+ wantsPaneSplitters: aBoolean
+
+ self setProperty: #allowPaneSplitters toValue: aBoolean.!
Item was changed:
----- Method: BottomGripMorph>>gripLayoutFrame (in category 'accessing') -----
gripLayoutFrame
^ LayoutFrame
fractions: (0 @ 1 corner: 1 @ 1)
+ offsets: (0 @ 0 negated corner: 0@ self defaultHeight)!
- offsets: (0 @ self defaultHeight negated corner: 0@ 0)!
Item was changed:
----- Method: BottomLeftGripMorph>>gripLayoutFrame (in category 'accessing') -----
gripLayoutFrame
^ LayoutFrame
fractions: (0 @ 1 corner: 0 @ 1)
+ offsets: (self class gripThickness negated @ (self defaultHeight negated + self class gripThickness)
+ corner: 0 @ 0)!
- offsets: (0 @ (0 - self defaultHeight) corner: self defaultWidth @ 0)!
Item was changed:
----- Method: BottomRightGripMorph>>gripLayoutFrame (in category 'accessing') -----
gripLayoutFrame
^ LayoutFrame
fractions: (1 @ 1 corner: 1 @ 1)
+ offsets: ((self defaultWidth negated + self class gripThickness) @ (self defaultHeight negated + self class gripThickness)
+ corner: 0 at 0)!
- offsets: (0 - self defaultWidth @ (0 - self defaultHeight) corner: 0 @ 0)!
Item was changed:
----- Method: LeftGripMorph>>gripLayoutFrame (in category 'accessing') -----
gripLayoutFrame
^ LayoutFrame
fractions: (0 @ 0 corner: 0 @ 1)
+ offsets: (self defaultWidth negated @ 0 corner: 0 @ 0)!
- offsets: (0 @ 0 negated corner: self defaultWidth @ 0)!
Item was changed:
----- Method: ProportionalLayout>>minExtentOf:in: (in category 'layout') -----
minExtentOf: aMorph in: newBounds
"Return the minimal size aMorph's children would require given the new bounds"
| min |
min := 0 at 0.
aMorph submorphsDo:[:m| | extent frame |
"Map the minimal size of the child through the layout frame.
Note: This is done here and not in the child because its specific
for proportional layouts. Perhaps we'll generalize this for table
layouts but I'm not sure how and when."
extent := m minExtent.
+ "frame := m layoutFrame.
+ frame ifNotNil:[extent := frame minExtentFrom: extent]."
- frame := m layoutFrame.
- frame ifNotNil:[extent := frame minExtentFrom: extent].
min := min max: extent].
^min!
Item was changed:
----- Method: ProportionalSplitterMorph>>minimumHeightOf: (in category 'boundaries') -----
minimumHeightOf: aCollection
+ "Answer the minimum height needed to display any of the morphs in aCollection.
+ See ProportionalLayout >> #minExtentOf:in:."
- "Answer the minimum height needed to display any of the morphs in aCollection."
^ aCollection inject: 0 into: [ :height :morph |
+ | minHeight |
+ minHeight := morph minHeight.
+ "morph layoutFrame ifNotNil: [:frame |
+ minHeight := frame minHeightFrom: minHeight]."
+ minHeight + self height max: height]!
- (morph minHeight + self height) max: height]!
Item was changed:
----- Method: ProportionalSplitterMorph>>minimumWidthOf: (in category 'boundaries') -----
minimumWidthOf: aCollection
+ "Answer the minimum width needed to display any of the morphs in aCollection.
+ See ProportionalLayout >> #minExtentOf:in:."
+
- "Answer the minimum width needed to display any of the morphs in aCollection."
-
^ aCollection inject: 0 into: [ :width :morph |
+ | minWidth |
+ minWidth := morph minWidth.
+ "morph layoutFrame ifNotNil: [:frame |
+ minWidth := frame minWidthFrom: minWidth]."
+ minWidth + self width max: width]!
- (morph minWidth + self width) max: width]!
Item was changed:
----- Method: ProportionalSplitterMorph>>repositionBy: (in category 'layout') -----
repositionBy: delta
| selfTop selfBottom selfLeft selfRight |
leftOrTop do:
+ [ : each | | firstRight firstBottom firstLeft firstTop |
- [ : each | | firstRight firstBottom |
firstRight := each layoutFrame rightOffset ifNil: [ 0 ].
firstBottom := each layoutFrame bottomOffset ifNil: [ 0 ].
each layoutFrame rightOffset: firstRight + delta x.
+ each layoutFrame bottomOffset: firstBottom + delta y.
+ each layoutFrame hasFixedHeight ifTrue: [
+ firstTop := each layoutFrame topOffset ifNil: [ 0 ].
+ each layoutFrame topOffset: firstTop + delta y ].
+ each layoutFrame hasFixedWidth ifTrue: [
+ firstLeft := each layoutFrame leftOffset ifNil: [ 0 ].
+ each layoutFrame leftOffset: firstLeft + delta x. ] ].
- each layoutFrame bottomOffset: firstBottom + delta y ].
rightOrBottom do:
+ [ : each | | secondLeft secondTop secondRight secondBottom |
- [ : each | | secondLeft secondTop |
secondLeft := each layoutFrame leftOffset ifNil: [ 0 ].
secondTop := each layoutFrame topOffset ifNil: [ 0 ].
each layoutFrame leftOffset: secondLeft + delta x.
+ each layoutFrame topOffset: secondTop + delta y.
+ each layoutFrame hasFixedHeight ifTrue: [
+ secondBottom := each layoutFrame bottomOffset ifNil: [ 0 ].
+ each layoutFrame bottomOffset: secondBottom + delta y. ].
+ each layoutFrame hasFixedWidth ifTrue: [
+ secondRight := each layoutFrame rightOffset ifNil: [ 0 ].
+ each layoutFrame rightOffset: secondRight + delta x. ] ].
+
- each layoutFrame topOffset: secondTop + delta y ].
selfTop := self layoutFrame topOffset ifNil: [ 0 ].
selfBottom := self layoutFrame bottomOffset ifNil: [ 0 ].
selfLeft := self layoutFrame leftOffset ifNil: [ 0 ].
selfRight := self layoutFrame rightOffset ifNil: [ 0 ].
self layoutFrame
topOffset: selfTop + delta y ;
bottomOffset: selfBottom + delta y ;
leftOffset: selfLeft + delta x ;
rightOffset: selfRight + delta x.
self owner layoutChanged.
self movements removeFirst; add: (splitsTopAndBottom ifTrue: [ delta y sign ] ifFalse: [ delta x sign ])!
Item was changed:
----- Method: ProportionalSplitterMorph>>rightBoundary (in category 'boundaries') -----
rightBoundary
"Answer the rightmost x position the receiver could be moved to."
| splitter morphs |
splitter := self splitterRight.
morphs := self commonNeighbours: rightOrBottom with: splitter.
+
^ (splitter
ifNil: [owner isSystemWindow ifTrue: [owner panelRect right]
ifFalse: [owner innerBounds right]]
ifNotNil: [splitter left])
- (self minimumWidthOf: morphs)!
Item was added:
+ ----- Method: ProportionalSplitterMorph>>splitsLeftAndRight (in category 'direction') -----
+ splitsLeftAndRight
+
+ ^ self splitsTopAndBottom not!
Item was changed:
----- Method: ProportionalSplitterMorph>>topBoundary (in category 'boundaries') -----
topBoundary
"Answer the topmost x position the receiver could be moved to."
| splitter morphs |
splitter := self splitterAbove.
morphs := self commonNeighbours: leftOrTop with: splitter.
+
^ (splitter
+ ifNil: [owner isSystemWindow ifTrue: [owner panelRect top]
- ifNil: [owner isSystemWindow ifTrue: [owner panelRect top + owner labelArea height + 3 ]
ifFalse: [owner innerBounds top]]
ifNotNil: [splitter bottom])
+ (self minimumHeightOf: morphs)!
Item was changed:
----- Method: RightGripMorph>>gripLayoutFrame (in category 'accessing') -----
gripLayoutFrame
^ LayoutFrame
fractions: (1 @ 0 corner: 1 @ 1)
+ offsets: (0 @ self defaultHeight negated corner: self defaultWidth @ 0)!
- offsets: (self defaultWidth negated @ self defaultHeight negated corner: 0@ 0)!
Item was changed:
----- Method: SystemWindow>>addMorph:fullFrame: (in category 'panes') -----
addMorph: aMorph fullFrame: aLayoutFrame
"Add aMorph according to aLayoutFrame."
- | windowBorderWidth |
- windowBorderWidth := self class borderWidth.
- "If the property #allowPaneSplitters is set to false, do *not* inset morphs by the borderWidth
- to make room for splitters. This allows windows with non-traditional contents to avoid their
- component morphs from being clipped. Do *NOT* remove this code please!! Just because
- there may be no setters of allowPaneSplitters to false in the image doesn't mean they're not
- out there. Thanks!! eem 6/13/2013"
- (self valueOfProperty: #allowPaneSplitters ifAbsent: [true]) ifTrue:
- [| left right bottom top |
- left := aLayoutFrame leftOffset ifNil: [0].
- right := aLayoutFrame rightOffset ifNil: [0].
-
- bottom := aLayoutFrame bottomOffset ifNil: [0].
- top := aLayoutFrame topOffset ifNil: [0].
-
- aLayoutFrame rightFraction = 1 ifTrue: [aLayoutFrame rightOffset: right - windowBorderWidth].
- aLayoutFrame leftFraction = 0
- ifTrue: [aLayoutFrame leftOffset: left + windowBorderWidth]
- ifFalse: [aLayoutFrame leftOffset: left + ProportionalSplitterMorph gripThickness].
-
- aLayoutFrame bottomFraction = 1 ifTrue: [aLayoutFrame bottomOffset: bottom - windowBorderWidth].
- aLayoutFrame topFraction = 0
- ifTrue: [aLayoutFrame topOffset: top + windowBorderWidth]
- ifFalse: [aLayoutFrame topOffset: top + ProportionalSplitterMorph gripThickness]].
-
- "this code should not be here!!!! As of 6/13/2013 there aren't even any users of BrowserCommentTextMorph."
- (aMorph class name = #BrowserCommentTextMorph) ifTrue:
- [aLayoutFrame rightOffset: windowBorderWidth negated.
- aLayoutFrame leftOffset: windowBorderWidth.
- aLayoutFrame bottomOffset: windowBorderWidth negated.
- aLayoutFrame topOffset: (windowBorderWidth negated) + 4].
-
super addMorph: aMorph fullFrame: aLayoutFrame.
paneMorphs := paneMorphs copyReplaceFrom: 1 to: 0 with: (Array with: aMorph).
aMorph isImageMorph ifFalse: [aMorph adoptPaneColor: self paneColor].
Preferences scrollBarsOnRight ifTrue:"reorder panes so flop-out right-side scrollbar is visible"
+ [self addMorphBack: aMorph].!
- [self addMorphBack: aMorph].
-
- self addPaneSplitters!
Item was removed:
- ----- Method: SystemWindow>>addPaneHSplitters (in category 'initialization') -----
- addPaneHSplitters
-
- | remaining targetY sameY |
- remaining := paneMorphs copy reject: [:each | each layoutFrame bottomFraction = 1].
- [remaining notEmpty] whileTrue:
- [targetY := remaining first layoutFrame bottomFraction.
- sameY := paneMorphs select: [:each | each layoutFrame bottomFraction = targetY].
- self addPaneHSplitterBetween: remaining first and: sameY.
- remaining := remaining copyWithoutAll: sameY]!
Item was changed:
----- Method: SystemWindow>>addPaneSplitters (in category 'initialization') -----
addPaneSplitters
- self removePaneSplitters.
self removeCornerGrips.
-
- self addCornerGrips.
- self addPaneVSplitters.
- self addPaneHSplitters.
+ super addPaneSplitters.
+
+ self addCornerGrips.!
- self linkSubmorphsToSplitters!
Item was removed:
- ----- Method: SystemWindow>>addPaneVSplitters (in category 'initialization') -----
- addPaneVSplitters
-
- | remaining targetX sameX |
- remaining := paneMorphs copy reject: [:each | each layoutFrame rightFraction = 1].
- [remaining notEmpty] whileTrue:
- [targetX := remaining first layoutFrame rightFraction.
- sameX := paneMorphs select: [:each | each layoutFrame rightFraction = targetX].
- self addPaneVSplitterBetween: remaining first and: sameX.
- remaining := remaining copyWithoutAll: sameX]!
Item was changed:
----- Method: SystemWindow>>setFramesForLabelArea (in category 'initialization') -----
setFramesForLabelArea
"an aid to converting old instances, but then I found
convertAlignment (jesse welton's note)"
+ | frame |
- | frame windowBorderWidth |
labelArea ifNil: [^ self].
labelArea
layoutPolicy: TableLayout new;
listDirection: #leftToRight;
hResizing: #spaceFill;
layoutInset: 0.
label hResizing: #spaceFill.
labelArea
ifNotNil: [frame := LayoutFrame new.
frame leftFraction: 0;
topFraction: 0;
rightFraction: 1;
bottomFraction: 0;
topOffset: self labelHeight negated.
- windowBorderWidth := self class borderWidth.
- frame leftOffset: windowBorderWidth;
- rightOffset: windowBorderWidth negated;
- topOffset: self labelHeight negated + windowBorderWidth;
- bottomOffset: windowBorderWidth negated.
labelArea layoutFrame: frame]!
Item was changed:
----- Method: TopGripMorph>>gripLayoutFrame (in category 'accessing') -----
gripLayoutFrame
^ LayoutFrame
fractions: (0 @ 0 corner: 1 @ 0)
+ offsets: (0 @ (-40 - self defaultHeight) corner: 0@ 0)!
- offsets: (0 @ -40 corner: 0@ 0)!
Item was changed:
----- Method: TopLeftGripMorph>>gripLayoutFrame (in category 'accessing') -----
gripLayoutFrame
^ LayoutFrame
fractions: (0 @ 0 corner: 0 @ 0)
+ offsets: (0 @ 0 corner: 0 @ 0)!
- offsets: (0 @ 0 corner: self defaultWidth @ 0)!
Item was changed:
----- Method: TopRightGripMorph>>gripLayoutFrame (in category 'accessing') -----
gripLayoutFrame
^ LayoutFrame
+ fractions: (1 @ 0 corner: 1 @ 0)
+ offsets: (0 @ 0 corner: 0 @ 0)!
- fractions: (1 @ 0 corner: 1 @ nil)
- offsets: (0 - self defaultWidth @ 0 corner: 0 @ nil)!
Item was changed:
(PackageInfo named: 'Morphic') postscript: '"Initialize the key bindings and menus"
Editor initialize.
"apply the new icons"
MenuIcons initializeIcons.
TheWorldMainDockingBar updateInstances.
+
+ "Fix missing inset of open windows."
+ SystemWindow allSubInstancesDo: [:ea |
+ ea
+ wantsPaneSplitters: true;
+ layoutInset: ProportionalSplitterMorph gripThickness;
+ cellInset: ProportionalSplitterMorph gripThickness].'!
-
- "Update minimum extents."
- PluggableButtonMorph allSubInstancesDo: [:ea |
- ea updateMinimumExtent].'!
More information about the Squeak-dev
mailing list
|