Files
supersonic/ui/layouts/maxpadlayout.go
T

39 lines
902 B
Go

package layouts
import "fyne.io/fyne/v2"
var _ fyne.Layout = (*MaxPadLayout)(nil)
type MaxPadLayout struct {
PadLeft float32
PadRight float32
PadTop float32
PadBottom float32
}
// only supports one object
func (c *MaxPadLayout) MinSize(objects []fyne.CanvasObject) fyne.Size {
if len(objects) == 0 {
return fyne.NewSize(c.PadLeft+c.PadRight, c.PadTop+c.PadBottom)
}
return fyne.Size{
Width: objects[0].MinSize().Width + c.PadLeft + c.PadRight,
Height: objects[0].MinSize().Height + c.PadTop + c.PadBottom,
}
}
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(pos)
child.Resize(objSize)
}
}