diff --git a/ui/layout/layout.go b/ui/layout/layout.go index 09c61e97..02e8655d 100644 --- a/ui/layout/layout.go +++ b/ui/layout/layout.go @@ -43,15 +43,19 @@ func (c Constraints) Constrain(p image.Point) image.Point { } func (c Constraints) Expand() Constraints { - return Constraints{Width: c.Width.Expand(), Height: c.Height.Expand()} -} - -func (c Constraint) Expand() Constraint { - return Constraint{Min: c.Max, Max: c.Max} + return Constraints{Width: c.Width.expand(), Height: c.Height.expand()} } func (c Constraints) Loose() Constraints { - return Constraints{Width: c.Width.Loose(), Height: c.Height.Loose()} + return Constraints{Width: c.Width.loose(), Height: c.Height.loose()} +} + +func (c Constraint) expand() Constraint { + return Constraint{Min: c.Max, Max: c.Max} +} + +func (c Constraint) loose() Constraint { + return Constraint{Max: c.Max} } func (c Constraints) Exact(width, height int) Constraints { @@ -74,10 +78,6 @@ func (c Constraints) Exact(width, height int) Constraints { return c } -func (c Constraint) Loose() Constraint { - return Constraint{Max: c.Max} -} - // ExactConstraints returns the rigid constraints that represents the // given dimensions. func ExactConstraints(size image.Point) Constraints { @@ -177,11 +177,11 @@ func (a *Align) End(dims Dimens) Dimens { ops := a.ops block := ops.End() sz := dims.Size - if a.cs.Width.Max != ui.Inf { - sz.X = a.cs.Width.Max + if sz.X < a.cs.Width.Min { + sz.X = a.cs.Width.Min } - if a.cs.Height.Max != ui.Inf { - sz.Y = a.cs.Height.Max + if sz.Y < a.cs.Height.Min { + sz.Y = a.cs.Height.Min } var p image.Point switch a.Alignment { diff --git a/ui/layout/list.go b/ui/layout/list.go index 476f591f..a383a564 100644 --- a/ui/layout/list.go +++ b/ui/layout/list.go @@ -217,11 +217,8 @@ func (l *List) Layout() Dimens { func (l *List) crossConstraintChild(cs Constraints) Constraint { c := axisCrossConstraint(l.Axis, cs) - switch l.CrossAxisAlignment { - case Stretch: + if l.CrossAxisAlignment == Stretch { c.Min = c.Max - default: - c.Min = 0 } return c }