adam-gui/vendor/fyne.io/fyne/v2/widget/separator.go
2024-04-29 19:13:50 +02:00

66 lines
1.3 KiB
Go

package widget
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/theme"
)
var _ fyne.Widget = (*Separator)(nil)
// Separator is a widget for displaying a separator with themeable color.
//
// Since: 1.4
type Separator struct {
BaseWidget
}
// NewSeparator creates a new separator.
//
// Since: 1.4
func NewSeparator() *Separator {
s := &Separator{}
s.ExtendBaseWidget(s)
return s
}
// CreateRenderer returns a new renderer for the separator.
//
// Implements: fyne.Widget
func (s *Separator) CreateRenderer() fyne.WidgetRenderer {
s.ExtendBaseWidget(s)
bar := canvas.NewRectangle(theme.SeparatorColor())
return &separatorRenderer{
WidgetRenderer: NewSimpleRenderer(bar),
bar: bar,
d: s,
}
}
// MinSize returns the minimal size of the separator.
//
// Implements: fyne.Widget
func (s *Separator) MinSize() fyne.Size {
s.ExtendBaseWidget(s)
t := theme.SeparatorThicknessSize()
return fyne.NewSize(t, t)
}
var _ fyne.WidgetRenderer = (*separatorRenderer)(nil)
type separatorRenderer struct {
fyne.WidgetRenderer
bar *canvas.Rectangle
d *Separator
}
func (r *separatorRenderer) MinSize() fyne.Size {
t := theme.SeparatorThicknessSize()
return fyne.NewSize(t, t)
}
func (r *separatorRenderer) Refresh() {
r.bar.FillColor = theme.SeparatorColor()
canvas.Refresh(r.d)
}