ui/layout: fix Flex spacing

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-07-01 19:22:06 +02:00
parent 91de9acc4a
commit 683df6345b
+12 -8
View File
@@ -143,7 +143,7 @@ func (f *Flex) Layout(children ...FlexChild) Dimens {
case SpaceAround: case SpaceAround:
mainSize += space / (len(children) * 2) mainSize += space / (len(children) * 2)
} }
for _, child := range children { for i, child := range children {
dims := child.dims dims := child.dims
b := dims.Baseline b := dims.Baseline
var cross int var cross int
@@ -164,19 +164,23 @@ func (f *Flex) Layout(children ...FlexChild) Dimens {
child.block.Add(f.ops) child.block.Add(f.ops)
ui.PopOp{}.Add(f.ops) ui.PopOp{}.Add(f.ops)
mainSize += axisMain(f.Axis, dims.Size) mainSize += axisMain(f.Axis, dims.Size)
switch f.MainAxisAlignment { if i < len(children)-1 {
case SpaceEvenly: switch f.MainAxisAlignment {
mainSize += space / (1 + len(children)) case SpaceEvenly:
case SpaceAround: mainSize += space / (1 + len(children))
mainSize += space / len(children) case SpaceAround:
case SpaceBetween: mainSize += space / len(children)
mainSize += space / (len(children) - 1) case SpaceBetween:
mainSize += space / (len(children) - 1)
}
} }
if b != dims.Size.Y { if b != dims.Size.Y {
baseline = b baseline = b
} }
} }
switch f.MainAxisAlignment { switch f.MainAxisAlignment {
case Center:
mainSize += space / 2
case Start: case Start:
mainSize += space mainSize += space
case SpaceEvenly: case SpaceEvenly: