ui/uilayout/minsize.go
2024-03-30 19:26:48 +01:00

34 lines
668 B
Go

package uilayout
import "fyne.io/fyne/v2"
type MinSize struct {
minSize fyne.Size
}
func NewMinSizeLayout(minSize fyne.Size) *MinSize {
return &MinSize{minSize: minSize}
}
func (l *MinSize) MinSize(objects []fyne.CanvasObject) fyne.Size {
size := l.minSize
for _, o := range objects {
childSize := o.MinSize()
if size.Width < childSize.Width {
size.Width = childSize.Width
}
if size.Height < childSize.Height {
size.Height = childSize.Height
}
}
return size
}
func (l *MinSize) Layout(objects []fyne.CanvasObject, containerSize fyne.Size) {
pos := fyne.NewPos(0, 0)
for _, o := range objects {
o.Resize(containerSize)
o.Move(pos)
}
}