Files
supersonic/ui/layouts/maxpadlayout.go
T

37 lines
873 B
Go

package layouts
import "fyne.io/fyne/v2"
var _ fyne.Layout = (*CenterPadLayout)(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
}
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))
}
}