66 lines
1.3 KiB
Go
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)
|
|
}
|