fckeuspy-go/vendor/fyne.io/fyne/v2/widget/separator.go

84 lines
1.7 KiB
Go

package widget
import (
"image/color"
"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
invert bool
}
// 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)
th := s.Theme()
v := fyne.CurrentApp().Settings().ThemeVariant()
var col color.Color
if s.invert {
col = th.Color(theme.ColorNameForeground, v)
} else {
col = th.Color(theme.ColorNameSeparator, v)
}
bar := canvas.NewRectangle(col)
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)
return s.BaseWidget.MinSize()
}
var _ fyne.WidgetRenderer = (*separatorRenderer)(nil)
type separatorRenderer struct {
fyne.WidgetRenderer
bar *canvas.Rectangle
d *Separator
}
func (r *separatorRenderer) MinSize() fyne.Size {
return fyne.NewSquareSize(r.d.Theme().Size(theme.SizeNameSeparatorThickness))
}
func (r *separatorRenderer) Refresh() {
th := r.d.Theme()
v := fyne.CurrentApp().Settings().ThemeVariant()
if r.d.invert {
r.bar.FillColor = th.Color(theme.ColorNameForeground, v)
} else {
r.bar.FillColor = th.Color(theme.ColorNameSeparator, v)
}
canvas.Refresh(r.d)
}