ui/layout: don't stretch Align child

Let the caller decide whether the constraints should be stretched.

Also unexport Constraint (not Constraints) methods, they weren't
pulling their weight.

Finally, don't force cross axis constraint minimum to 0 in List.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-07-11 09:18:56 +02:00
parent dbe15b23a9
commit 896f5a77dd
2 changed files with 15 additions and 18 deletions
+14 -14
View File
@@ -43,15 +43,19 @@ func (c Constraints) Constrain(p image.Point) image.Point {
} }
func (c Constraints) Expand() Constraints { func (c Constraints) Expand() Constraints {
return Constraints{Width: c.Width.Expand(), Height: c.Height.Expand()} return Constraints{Width: c.Width.expand(), Height: c.Height.expand()}
}
func (c Constraint) Expand() Constraint {
return Constraint{Min: c.Max, Max: c.Max}
} }
func (c Constraints) Loose() Constraints { 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 { func (c Constraints) Exact(width, height int) Constraints {
@@ -74,10 +78,6 @@ func (c Constraints) Exact(width, height int) Constraints {
return c return c
} }
func (c Constraint) Loose() Constraint {
return Constraint{Max: c.Max}
}
// ExactConstraints returns the rigid constraints that represents the // ExactConstraints returns the rigid constraints that represents the
// given dimensions. // given dimensions.
func ExactConstraints(size image.Point) Constraints { func ExactConstraints(size image.Point) Constraints {
@@ -177,11 +177,11 @@ func (a *Align) End(dims Dimens) Dimens {
ops := a.ops ops := a.ops
block := ops.End() block := ops.End()
sz := dims.Size sz := dims.Size
if a.cs.Width.Max != ui.Inf { if sz.X < a.cs.Width.Min {
sz.X = a.cs.Width.Max sz.X = a.cs.Width.Min
} }
if a.cs.Height.Max != ui.Inf { if sz.Y < a.cs.Height.Min {
sz.Y = a.cs.Height.Max sz.Y = a.cs.Height.Min
} }
var p image.Point var p image.Point
switch a.Alignment { switch a.Alignment {
+1 -4
View File
@@ -217,11 +217,8 @@ func (l *List) Layout() Dimens {
func (l *List) crossConstraintChild(cs Constraints) Constraint { func (l *List) crossConstraintChild(cs Constraints) Constraint {
c := axisCrossConstraint(l.Axis, cs) c := axisCrossConstraint(l.Axis, cs)
switch l.CrossAxisAlignment { if l.CrossAxisAlignment == Stretch {
case Stretch:
c.Min = c.Max c.Min = c.Max
default:
c.Min = 0
} }
return c return c
} }