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@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@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].'! |
Free forum by Nabble | Edit this page |