46 lines
807 B
Go
46 lines
807 B
Go
|
package uilayout
|
||
|
|
||
|
import "fyne.io/fyne/v2"
|
||
|
|
||
|
type Padding struct {
|
||
|
top float32
|
||
|
bottom float32
|
||
|
left float32
|
||
|
right float32
|
||
|
}
|
||
|
|
||
|
func NewPadding(
|
||
|
top, bottom, left, right float32,
|
||
|
) *Padding {
|
||
|
return &Padding{
|
||
|
top: top,
|
||
|
bottom: bottom,
|
||
|
left: left,
|
||
|
right: right,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (p *Padding) MinSize(objects []fyne.CanvasObject) fyne.Size {
|
||
|
w := p.left + p.right
|
||
|
h := p.top + p.bottom
|
||
|
if len(objects) > 0 {
|
||
|
w += objects[0].MinSize().Width
|
||
|
h += objects[0].MinSize().Height
|
||
|
}
|
||
|
return fyne.NewSize(w, h)
|
||
|
}
|
||
|
|
||
|
func (p *Padding) Layout(
|
||
|
objects []fyne.CanvasObject,
|
||
|
containerSize fyne.Size,
|
||
|
) {
|
||
|
pos := fyne.NewPos(p.left, p.top)
|
||
|
if len(objects) > 0 {
|
||
|
o := objects[0]
|
||
|
size := containerSize.Subtract(
|
||
|
fyne.NewSize(p.left+p.right, p.top+p.bottom))
|
||
|
o.Resize(size)
|
||
|
o.Move(pos)
|
||
|
}
|
||
|
}
|