[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