| 123456789101112131415161718192021222324252627282930313233343536373839 |
- package layout
- import "fyne.io/fyne/v2"
- // Declare conformity with Layout interface
- var _ fyne.Layout = (*centerLayout)(nil)
- type centerLayout struct {
- }
- // NewCenterLayout creates a new CenterLayout instance
- func NewCenterLayout() fyne.Layout {
- return ¢erLayout{}
- }
- // Layout is called to pack all child objects into a specified size.
- // For CenterLayout this sets all children to their minimum size, centered within the space.
- func (c *centerLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) {
- for _, child := range objects {
- childMin := child.MinSize()
- child.Resize(childMin)
- child.Move(fyne.NewPos(float32(size.Width-childMin.Width)/2, float32(size.Height-childMin.Height)/2))
- }
- }
- // MinSize finds the smallest size that satisfies all the child objects.
- // For CenterLayout this is determined simply as the MinSize of the largest child.
- func (c *centerLayout) MinSize(objects []fyne.CanvasObject) fyne.Size {
- minSize := fyne.NewSize(0, 0)
- for _, child := range objects {
- if !child.Visible() {
- continue
- }
- minSize = minSize.Max(child.MinSize())
- }
- return minSize
- }
|