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 {
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 {
+1 -4
View File
@@ -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
}