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