From e486fcddadd59e669acb156278fa82962182c3b0 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Wed, 3 May 2023 09:09:13 -0700 Subject: [PATCH] don't re-calculate values in loops for layouts --- ui/layouts/columnslayout.go | 5 +++-- ui/layouts/hboxcustompadding.go | 3 ++- ui/layouts/leftmiddlerightlayout.go | 9 +++++---- ui/layouts/maxpadlayout.go | 6 ++++-- ui/layouts/vboxcustompadding.go | 3 ++- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ui/layouts/columnslayout.go b/ui/layouts/columnslayout.go index 5276483..4cd9089 100644 --- a/ui/layouts/columnslayout.go +++ b/ui/layouts/columnslayout.go @@ -25,8 +25,9 @@ func (c *ColumnsLayout) MinSize(objects []fyne.CanvasObject) fyne.Size { if !objects[i].Visible() { continue } - height = fyne.Max(height, objects[i].MinSize().Height) - w := objects[i].MinSize().Width + s := objects[i].MinSize() + height = fyne.Max(height, s.Height) + w := s.Width if i < len(c.ColumnWidths) && c.ColumnWidths[i] > w { w = c.ColumnWidths[i] } diff --git a/ui/layouts/hboxcustompadding.go b/ui/layouts/hboxcustompadding.go index cedac3c..ddc71c5 100644 --- a/ui/layouts/hboxcustompadding.go +++ b/ui/layouts/hboxcustompadding.go @@ -37,6 +37,7 @@ func (v *HboxCustomPadding) Layout(objects []fyne.CanvasObject, size fyne.Size) x, y := float32(0), float32(0) + padding := v.themePad() + v.ExtraPad extra := float32(0) for _, child := range objects { if !child.Visible() { @@ -46,7 +47,7 @@ func (v *HboxCustomPadding) Layout(objects []fyne.CanvasObject, size fyne.Size) child.Move(fyne.NewPos(x+extra, y)) x += width child.Resize(fyne.NewSize(width, size.Height)) - extra += (v.themePad() + v.ExtraPad) + extra += padding } } diff --git a/ui/layouts/leftmiddlerightlayout.go b/ui/layouts/leftmiddlerightlayout.go index 2aeccda..13bbe22 100644 --- a/ui/layouts/leftmiddlerightlayout.go +++ b/ui/layouts/leftmiddlerightlayout.go @@ -30,14 +30,15 @@ func (b *LeftMiddleRightLayout) MinSize(objects []fyne.CanvasObject) fyne.Size { } func (b *LeftMiddleRightLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) { + pad := theme.Padding() midW := fyne.Max(b.middleWidth, objects[1].MinSize().Width) - lrW := (size.Width - midW - theme.Padding()*4) / 2 + lrW := (size.Width - midW - pad*4) / 2 objects[0].Resize(fyne.NewSize(lrW, size.Height)) - objects[0].Move(fyne.NewPos(theme.Padding(), 0)) + objects[0].Move(fyne.NewPos(pad, 0)) objects[1].Resize(fyne.NewSize(midW, size.Height)) - objects[1].Move(fyne.NewPos(lrW+theme.Padding()*2, 0)) + objects[1].Move(fyne.NewPos(lrW+pad*2, 0)) if objects[2] != nil { objects[2].Resize(fyne.NewSize(lrW, size.Height)) - objects[2].Move(fyne.NewPos(lrW+midW+theme.Padding()*3, 0)) + objects[2].Move(fyne.NewPos(lrW+midW+pad*3, 0)) } } diff --git a/ui/layouts/maxpadlayout.go b/ui/layouts/maxpadlayout.go index 777846d..7af0d37 100644 --- a/ui/layouts/maxpadlayout.go +++ b/ui/layouts/maxpadlayout.go @@ -26,11 +26,13 @@ func (c *MaxPadLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) { if len(objects) == 0 { return } + pos := fyne.NewPos(c.PadLeft, c.PadTop) + objSize := fyne.NewSize(size.Width-c.PadLeft-c.PadRight, size.Height-c.PadTop-c.PadBottom) for _, child := range objects { if !child.Visible() { continue } - child.Move(fyne.NewPos(c.PadLeft, c.PadTop)) - child.Resize(fyne.NewSize(size.Width-c.PadLeft-c.PadRight, size.Height-c.PadTop-c.PadBottom)) + child.Move(pos) + child.Resize(objSize) } } diff --git a/ui/layouts/vboxcustompadding.go b/ui/layouts/vboxcustompadding.go index ab8c8fb..4d22088 100644 --- a/ui/layouts/vboxcustompadding.go +++ b/ui/layouts/vboxcustompadding.go @@ -36,6 +36,7 @@ func (v *VboxCustomPadding) Layout(objects []fyne.CanvasObject, size fyne.Size) x, y := float32(0), float32(0) + padding := theme.Padding() + v.ExtraPad extra := float32(0) for _, child := range objects { if !child.Visible() { @@ -45,6 +46,6 @@ func (v *VboxCustomPadding) Layout(objects []fyne.CanvasObject, size fyne.Size) child.Move(fyne.NewPos(x, y+extra)) y += height child.Resize(fyne.NewSize(size.Width, height)) - extra += (theme.Padding() + v.ExtraPad) + extra += padding } }