diff --git a/layouts/rowcol.go b/layouts/rowcol.go index b239a5b..5bcaa90 100644 --- a/layouts/rowcol.go +++ b/layouts/rowcol.go @@ -41,12 +41,12 @@ func (row Row) MinimumSize (hints tomo.LayoutHints, boxes []tomo.Box) image.Poin func (column Column) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) { expands := func (index int) bool { - if index < len(boxes) { return false } + if index >= len(column) { return false } return column[index] } // determine expanding box size - expandingSize := 0 + expandingSize := 0.0 if !hints.OverflowY { gaps := len(boxes) - 1 freeSpace := float64(hints.Bounds.Dy() - hints.Gap.Y * gaps) @@ -83,7 +83,7 @@ func (column Column) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) { } } else { if expands(index) { - height = expandingSize + height = int(expandingSize) } } @@ -111,12 +111,12 @@ func (column Column) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) { func (row Row) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) { expands := func (index int) bool { - if index < len(boxes) { return false } + if index >= len(row) { return false } return row[index] } // determine expanding box size - expandingSize := 0 + expandingSize := 0.0 if !hints.OverflowY { gaps := len(boxes) - 1 freeSpace := float64(hints.Bounds.Dx() - hints.Gap.X * gaps) @@ -127,6 +127,7 @@ func (row Row) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) { freeSpace -= float64(box.MinimumSize().Y) } } + expandingSize = freeSpace / float64(nExpanding) } // determine height @@ -153,7 +154,7 @@ func (row Row) Arrange (hints tomo.LayoutHints, boxes []tomo.Box) { } } else { if expands(index) { - width = expandingSize + width = int(expandingSize) } }