fckeuspy-go/vendor/fyne.io/fyne/v2/layout/custompaddedlayout.go

62 lines
1.7 KiB
Go

package layout
import (
"fyne.io/fyne/v2"
)
// Declare conformity with Layout interface
var _ fyne.Layout = (*CustomPaddedLayout)(nil)
// CustomPaddedLayout is a layout similar to PaddedLayout, but uses
// custom values for padding on each side, rather than the theme padding value.
//
// Since: 2.5
type CustomPaddedLayout struct {
TopPadding float32
BottomPadding float32
LeftPadding float32
RightPadding float32
}
// NewCustomPaddedLayout creates a new CustomPaddedLayout instance
// with the specified paddings.
//
// Since: 2.5
func NewCustomPaddedLayout(padTop, padBottom, padLeft, padRight float32) fyne.Layout {
return CustomPaddedLayout{
TopPadding: padTop,
BottomPadding: padBottom,
LeftPadding: padLeft,
RightPadding: padRight,
}
}
// Layout is called to pack all child objects into a specified size.
// For CustomPaddedLayout this sets all children to the full size passed minus the given paddings all around.
func (c CustomPaddedLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) {
pos := fyne.NewPos(c.LeftPadding, c.TopPadding)
siz := fyne.Size{
Width: size.Width - c.LeftPadding - c.RightPadding,
Height: size.Height - c.TopPadding - c.BottomPadding,
}
for _, child := range objects {
child.Resize(siz)
child.Move(pos)
}
}
// MinSize finds the smallest size that satisfies all the child objects.
// For CustomPaddedLayout this is determined simply as the MinSize of the largest child plus the given paddings all around.
func (c CustomPaddedLayout) MinSize(objects []fyne.CanvasObject) (min fyne.Size) {
for _, child := range objects {
if !child.Visible() {
continue
}
min = min.Max(child.MinSize())
}
min.Width += c.LeftPadding + c.RightPadding
min.Height += c.TopPadding + c.BottomPadding
return
}