separator.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package widget
  2. import (
  3. "fyne.io/fyne/v2"
  4. "fyne.io/fyne/v2/canvas"
  5. "fyne.io/fyne/v2/theme"
  6. )
  7. var _ fyne.Widget = (*Separator)(nil)
  8. // Separator is a widget for displaying a separator with themeable color.
  9. //
  10. // Since: 1.4
  11. type Separator struct {
  12. BaseWidget
  13. }
  14. // NewSeparator creates a new separator.
  15. //
  16. // Since: 1.4
  17. func NewSeparator() *Separator {
  18. s := &Separator{}
  19. s.ExtendBaseWidget(s)
  20. return s
  21. }
  22. // CreateRenderer returns a new renderer for the separator.
  23. //
  24. // Implements: fyne.Widget
  25. func (s *Separator) CreateRenderer() fyne.WidgetRenderer {
  26. s.ExtendBaseWidget(s)
  27. bar := canvas.NewRectangle(theme.SeparatorColor())
  28. return &separatorRenderer{
  29. WidgetRenderer: NewSimpleRenderer(bar),
  30. bar: bar,
  31. d: s,
  32. }
  33. }
  34. // MinSize returns the minimal size of the separator.
  35. //
  36. // Implements: fyne.Widget
  37. func (s *Separator) MinSize() fyne.Size {
  38. s.ExtendBaseWidget(s)
  39. t := theme.SeparatorThicknessSize()
  40. return fyne.NewSize(t, t)
  41. }
  42. var _ fyne.WidgetRenderer = (*separatorRenderer)(nil)
  43. type separatorRenderer struct {
  44. fyne.WidgetRenderer
  45. bar *canvas.Rectangle
  46. d *Separator
  47. }
  48. func (r *separatorRenderer) MinSize() fyne.Size {
  49. t := theme.SeparatorThicknessSize()
  50. return fyne.NewSize(t, t)
  51. }
  52. func (r *separatorRenderer) Refresh() {
  53. r.bar.FillColor = theme.SeparatorColor()
  54. canvas.Refresh(r.d)
  55. }