<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
Well, actually the method #<span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">addPaneHSplitterBetween:and: was badly named because it did not reveal the actual effect. After renaming it to #</span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">addPaneHSplitterAtBottomOfRow: and changing #</span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">addPaneHSplitters, the bug solved itself. :-)</span><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
<p style="color: #AAAAAA; margin-top: 10px;">Am 20.11.2019 16:18:31 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style="font-family:Arial,Helvetica,sans-serif">Marcel Taeumel uploaded a new version of Morphic to project The Trunk:<br>http://source.squeak.org/trunk/Morphic-mt.1590.mcz<br><br>==================== Summary ====================<br><br>Name: Morphic-mt.1590<br>Author: mt<br>Time: 20 November 2019, 4:18:13.982237 pm<br>UUID: ecbe5a17-bdc5-554e-a2dc-d29638ee6752<br>Ancestors: Morphic-mt.1589<br><br>Fixes a bug with splitter positioning under certain conditions in the PropotionalLayout.<br><br>=============== Diff against Morphic-mt.1589 ===============<br><br>Item was added:<br>+ ----- Method: BorderedMorph>>addPaneHSplitterAtBottomOfRow: (in category 'resize handling') -----<br>+ addPaneHSplitterAtBottomOfRow: someMorphs<br>+ <br>+ | targetY minX maxX splitter |<br>+ targetY := someMorphs first layoutFrame bottomFraction.<br>+ <br>+ minX := (someMorphs detectMin: [:each | each layoutFrame leftFraction]) layoutFrame leftFraction.<br>+ maxX := (someMorphs detectMax: [:each | each layoutFrame rightFraction]) layoutFrame rightFraction.<br>+ <br>+ splitter := ProportionalSplitterMorph new beSplitsTopAndBottom; yourself.<br>+ splitter layoutFrame: (LayoutFrame<br>+ fractions: (minX @ targetY corner: maxX @ targetY)<br>+ offsets: (((someMorphs first layoutFrame leftOffset ifNil: [0]) @ 0 <br>+ corner: (someMorphs first layoutFrame rightOffset ifNil: [0]) @ AbstractResizerMorph gripThickness) <br>+ translateBy: 0 @ (someMorphs first layoutFrame bottomOffset ifNil: [0]))).<br>+ <br>+ self addMorphBack: (splitter position: self position).!<br><br>Item was removed:<br>- ----- Method: BorderedMorph>>addPaneHSplitterBetween:and: (in category 'resize handling') -----<br>- addPaneHSplitterBetween: topMorph and: bottomMorphs<br>- <br>- | targetY minX maxX splitter |<br>- targetY := topMorph layoutFrame bottomFraction.<br>- <br>- minX := (bottomMorphs detectMin: [:each | each layoutFrame leftFraction]) layoutFrame leftFraction.<br>- maxX := (bottomMorphs detectMax: [:each | each layoutFrame rightFraction]) layoutFrame rightFraction.<br>- splitter := ProportionalSplitterMorph new beSplitsTopAndBottom; yourself.<br>- splitter layoutFrame: (LayoutFrame<br>- fractions: (minX @ targetY corner: maxX @ targetY)<br>- offsets: (((topMorph layoutFrame leftOffset ifNil: [0]) @ 0 <br>- corner: (topMorph layoutFrame rightOffset ifNil: [0]) @ AbstractResizerMorph gripThickness) <br>- translateBy: 0 @ (topMorph layoutFrame bottomOffset ifNil: [0]))).<br>- <br>- self addMorphBack: (splitter position: self position).!<br><br>Item was changed:<br> ----- Method: BorderedMorph>>addPaneHSplitters (in category 'resize handling') -----<br> addPaneHSplitters<br> <br> | remaining targetY sameY |<br> remaining := self paneMorphs reject: [:each |<br> each layoutFrame bottomFraction = 1<br> or: [each layoutFrame hasFixedHeight]].<br> [remaining notEmpty] whileTrue:<br> [targetY := remaining first layoutFrame bottomFraction.<br> sameY := self paneMorphs select: [:each | each layoutFrame bottomFraction = targetY].<br>+ self addPaneHSplitterAtBottomOfRow: sameY.<br>- self addPaneHSplitterBetween: remaining first and: sameY.<br> remaining := remaining copyWithoutAll: sameY]!<br><br>Item was added:<br>+ ----- Method: BorderedMorph>>addPaneVSplitterAtRightOfColumn: (in category 'resize handling') -----<br>+ addPaneVSplitterAtRightOfColumn: someMorphs<br>+ <br>+ | targetX minY maxY splitter |<br>+ targetX := someMorphs first layoutFrame rightFraction.<br>+ minY := (someMorphs detectMin: [:each | each layoutFrame topFraction]) layoutFrame topFraction.<br>+ maxY := (someMorphs detectMax: [:each | each layoutFrame bottomFraction]) layoutFrame bottomFraction.<br>+ <br>+ splitter := ProportionalSplitterMorph new.<br>+ splitter layoutFrame: (LayoutFrame<br>+ fractions: (targetX @ minY corner: targetX @ maxY)<br>+ offsets: ((0 @ (someMorphs first layoutFrame topOffset ifNil: [0]) corner: (AbstractResizerMorph gripThickness@ (someMorphs first layoutFrame bottomOffset ifNil: [0]))) translateBy: (someMorphs first layoutFrame rightOffset ifNil: [0]) @ 0)).<br>+ <br>+ self addMorphBack: (splitter position: self position).!<br><br>Item was removed:<br>- ----- Method: BorderedMorph>>addPaneVSplitterBetween:and: (in category 'resize handling') -----<br>- addPaneVSplitterBetween: leftMorph and: rightMorphs <br>- <br>- | targetX minY maxY splitter |<br>- targetX := leftMorph layoutFrame rightFraction.<br>- minY := (rightMorphs detectMin: [:each | each layoutFrame topFraction]) layoutFrame topFraction.<br>- maxY := (rightMorphs detectMax: [:each | each layoutFrame bottomFraction]) layoutFrame bottomFraction.<br>- <br>- splitter := ProportionalSplitterMorph new.<br>- splitter layoutFrame: (LayoutFrame<br>- fractions: (targetX @ minY corner: targetX @ maxY)<br>- offsets: ((0 @ (leftMorph layoutFrame topOffset ifNil: [0]) corner: (AbstractResizerMorph gripThickness@ (leftMorph layoutFrame bottomOffset ifNil: [0]))) translateBy: (leftMorph layoutFrame rightOffset ifNil: [0]) @ 0)).<br>- <br>- self addMorphBack: (splitter position: self position).!<br><br>Item was changed:<br> ----- Method: BorderedMorph>>addPaneVSplitters (in category 'resize handling') -----<br> addPaneVSplitters<br> <br> | remaining targetX sameX |<br> remaining := self paneMorphs reject: [:each |<br> each layoutFrame rightFraction = 1<br> or: [each layoutFrame hasFixedWidth]].<br> [remaining notEmpty] whileTrue:<br> [targetX := remaining first layoutFrame rightFraction.<br> sameX := self paneMorphs select: [:each | each layoutFrame rightFraction = targetX].<br>+ self addPaneVSplitterAtRightOfColumn: sameX.<br>- self addPaneVSplitterBetween: remaining first and: sameX.<br> remaining := remaining copyWithoutAll: sameX]!<br><br><br></div></blockquote>
</div></body>