From 83b1957fd7d03e0eb16f86e481596af1d095dd16 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Mon, 1 Sep 2014 10:11:41 -0400 Subject: Implemented vertical alignment in Grid. --- grid.go | 6 ++++-- yz_repaint_test.go | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/grid.go b/grid.go index 1b4f7bc..a049a38 100644 --- a/grid.go +++ b/grid.go @@ -259,12 +259,14 @@ func (g *grid) allocate(x int, y int, width int, height int, d *sizing) (allocat default: panic(fmt.Errorf("invalid xalign %d in Grid.allocate()", cell.xalign)) } + cell.yoff = 0 switch cell.yalign { case LeftTop: // do nothing; this is the default case Center: + cell.yoff = (rowheights[cell.gridy] - cell.height) / 2 case RightBottom: - // TODO + cell.yoff = rowheights[cell.gridy] - cell.height case Fill: cell.height = rowheights[cell.gridy] default: @@ -280,7 +282,7 @@ func (g *grid) allocate(x int, y int, width int, height int, d *sizing) (allocat current = nil for col, c := range xcol { cell := g.controls[c] - as := c.allocate(x + cell.xoff, y, cell.width, cell.height, d) + as := c.allocate(x + cell.xoff, y + cell.yoff, cell.width, cell.height, d) if current != nil { // connect first left to first right current.neighbor = c } diff --git a/yz_repaint_test.go b/yz_repaint_test.go index f940f64..5623b6b 100644 --- a/yz_repaint_test.go +++ b/yz_repaint_test.go @@ -31,6 +31,9 @@ func newRepainter(times int) *repainter { r.img = tileImage(times) r.area = NewArea(r.img.Rect.Dx(), r.img.Rect.Dy(), r) r.area.OnTextFieldDismissed(r.tfdone) + grid2 := NewGrid() + grid2.Add(r.area, nil, South, true, Fill, true, Fill) + grid2.Add(NewButton("X"), nil, East, false, LeftTop, true, Center) r.x = NewTextField() r.x.OnChanged(r.setx) r.y = NewTextField() @@ -50,7 +53,7 @@ func newRepainter(times int) *repainter { grid.Add(r.width, r.x, South, true, Fill, false, LeftTop) grid.Add(r.height, nil, East, true, Fill, false, LeftTop) grid.Add(r.all, nil, East, false, Center, false, LeftTop) - r.stack = NewVerticalStack(r.area, grid) + r.stack = NewVerticalStack(grid2, grid) r.stack.SetStretchy(0) return r } -- cgit v1.2.3