| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package layout
- import (
- "fyne.io/fyne/v2"
- "fyne.io/fyne/v2/theme"
- )
- // Declare conformity with Layout interface
- var _ fyne.Layout = (*paddedLayout)(nil)
- type paddedLayout struct {
- }
- // Layout is called to pack all child objects into a specified size.
- // For PaddedLayout this sets all children to the full size passed minus padding all around.
- func (l *paddedLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) {
- padding := theme.Padding()
- pos := fyne.NewPos(padding, padding)
- siz := fyne.NewSize(size.Width-2*padding, size.Height-2*padding)
- for _, child := range objects {
- child.Resize(siz)
- child.Move(pos)
- }
- }
- // MinSize finds the smallest size that satisfies all the child objects.
- // For PaddedLayout this is determined simply as the MinSize of the largest child plus padding all around.
- func (l *paddedLayout) MinSize(objects []fyne.CanvasObject) (min fyne.Size) {
- for _, child := range objects {
- if !child.Visible() {
- continue
- }
- min = min.Max(child.MinSize())
- }
- min = min.Add(fyne.NewSquareSize(2 * theme.Padding()))
- return
- }
- // NewPaddedLayout creates a new PaddedLayout instance
- //
- // Since: 1.4
- func NewPaddedLayout() fyne.Layout {
- return &paddedLayout{}
- }
|