summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--grid.go19
-rw-r--r--stack.go18
2 files changed, 12 insertions, 25 deletions
diff --git a/grid.go b/grid.go
index 087b333..ca2d5b9 100644
--- a/grid.go
+++ b/grid.go
@@ -21,7 +21,7 @@ type Grid struct {
controls [][]Control
filling [][]bool
stretchyrow, stretchycol int
- widths, heights, yoff [][]int // caches to avoid reallocating each time
+ widths, heights [][]int // caches to avoid reallocating each time
rowheights, colwidths []int
}
@@ -42,14 +42,12 @@ func NewGrid(nPerRow int, controls ...Control) *Grid {
cf := make([][]bool, nRows)
cw := make([][]int, nRows)
ch := make([][]int, nRows)
- cyoff := make([][]int, nRows)
i := 0
for row := 0; row < nRows; row++ {
cc[row] = make([]Control, nPerRow)
cf[row] = make([]bool, nPerRow)
cw[row] = make([]int, nPerRow)
ch[row] = make([]int, nPerRow)
- cyoff[row] = make([]int, nPerRow)
for x := 0; x < nPerRow; x++ {
cc[row][x] = controls[i]
i++
@@ -62,7 +60,6 @@ func NewGrid(nPerRow int, controls ...Control) *Grid {
stretchycol: -1,
widths: cw,
heights: ch,
- yoff: cyoff,
rowheights: make([]int, nRows),
colwidths: make([]int, nPerRow),
}
@@ -145,12 +142,11 @@ func (g *Grid) setRect(x int, y int, width int, height int, rr *[]resizerequest)
// 2) get preferred sizes; compute row/column sizes
for row, xcol := range g.controls {
for col, c := range xcol {
- w, h, yoff := c.preferredSize()
+ w, h := c.preferredSize()
g.widths[row][col] = w
g.heights[row][col] = h
g.rowheights[row] = max(g.rowheights[row], h)
g.colwidths[col] = max(g.colwidths[col], w)
- g.yoff[row][col] = yoff
}
}
// 3) handle the stretchy control
@@ -178,7 +174,7 @@ func (g *Grid) setRect(x int, y int, width int, height int, rr *[]resizerequest)
w = g.colwidths[col]
h = g.rowheights[row]
}
- c.setRect(x, y + g.yoff[row][col], w, h - g.yoff[row][col], rr)
+ c.setRect(x, y, w, h, rr)
x += g.colwidths[col]
}
x = startx
@@ -188,7 +184,7 @@ func (g *Grid) setRect(x int, y int, width int, height int, rr *[]resizerequest)
}
// filling and stretchy are ignored for preferred size calculation
-func (g *Grid) preferredSize() (width int, height int, yoff int) {
+func (g *Grid) preferredSize() (width int, height int) {
max := func(a int, b int) int {
if a > b {
return a
@@ -206,8 +202,7 @@ func (g *Grid) preferredSize() (width int, height int, yoff int) {
// 2) get preferred sizes; compute row/column sizes
for row, xcol := range g.controls {
for col, c := range xcol {
- // ignore yoff for preferred size calculations
- w, h, _ := c.preferredSize()
+ w, h := c.preferredSize()
g.widths[row][col] = w
g.heights[row][col] = h
g.rowheights[row] = max(g.rowheights[row], h)
@@ -221,7 +216,5 @@ func (g *Grid) preferredSize() (width int, height int, yoff int) {
for _, h := range g.rowheights {
height += h
}
-
- // yoff is always zero for grids
- return width, height, 0
+ return width, height
}
diff --git a/stack.go b/stack.go
index 17df63a..bbc78ec 100644
--- a/stack.go
+++ b/stack.go
@@ -25,7 +25,7 @@ type Stack struct {
orientation orientation
controls []Control
stretchy []bool
- width, height, yoff []int // caches to avoid reallocating these each time
+ width, height []int // caches to avoid reallocating these each time
}
func newStack(o orientation, controls ...Control) *Stack {
@@ -35,7 +35,6 @@ func newStack(o orientation, controls ...Control) *Stack {
stretchy: make([]bool, len(controls)),
width: make([]int, len(controls)),
height: make([]int, len(controls)),
- yoff: make([]int, len(controls)),
}
}
@@ -93,8 +92,7 @@ func (s *Stack) setRect(x int, y int, width int, height int, rr *[]resizerequest
nStretchy++
continue
}
- w, h, yoff := c.preferredSize()
- s.yoff[i] = yoff
+ w, h := c.preferredSize()
if s.orientation == horizontal { // all controls have same height
s.width[i] = w
s.height[i] = height
@@ -122,7 +120,7 @@ func (s *Stack) setRect(x int, y int, width int, height int, rr *[]resizerequest
}
// 3) now actually place controls
for i, c := range s.controls {
- c.setRect(x, y + s.yoff[i], s.width[i], s.height[i] - s.yoff[i], rr)
+ c.setRect(x, y, s.width[i], s.height[i], rr)
if s.orientation == horizontal {
x += s.width[i]
} else {
@@ -133,7 +131,7 @@ func (s *Stack) setRect(x int, y int, width int, height int, rr *[]resizerequest
}
// The preferred size of a Stack is the sum of the preferred sizes of non-stretchy controls + (the number of stretchy controls * the largest preferred size among all stretchy controls).
-func (s *Stack) preferredSize() (width int, height int, yoff int) {
+func (s *Stack) preferredSize() (width int, height int) {
max := func(a int, b int) int {
if a > b {
return a
@@ -145,11 +143,10 @@ func (s *Stack) preferredSize() (width int, height int, yoff int) {
var maxswid, maxsht int
if len(s.controls) == 0 { // no controls, so return emptiness
- return 0, 0, 0
+ return 0, 0
}
for i, c := range s.controls {
- // ignore yoff for preferred size calculations
- w, h, _ := c.preferredSize()
+ w, h := c.preferredSize()
if s.stretchy[i] {
nStretchy++
maxswid = max(maxswid, w)
@@ -172,9 +169,6 @@ func (s *Stack) preferredSize() (width int, height int, yoff int) {
} else {
height += nStretchy * maxsht
}
-
- // yoff is always zero for stacks
- yoff = 0
return
}