Added override for scrollbar color.
This commit is contained in:
parent
b0a13d1a3c
commit
7d5168614e
@ -23,11 +23,17 @@ type overflow struct {
|
|||||||
ver *Scrollbar
|
ver *Scrollbar
|
||||||
}
|
}
|
||||||
|
|
||||||
func Overflow(content Control) Control {
|
type ScrollControl interface {
|
||||||
|
Control
|
||||||
|
|
||||||
|
SetScrollbarColor(bar color.Color, hover color.Color)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Overflow(content Control) ScrollControl {
|
||||||
return OverflowBackground(content, nil)
|
return OverflowBackground(content, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func OverflowBackground(content Control, back color.Color) Control {
|
func OverflowBackground(content Control, back color.Color) ScrollControl {
|
||||||
var o = &overflow{Proxy: Proxy{Content: content}, Background: back}
|
var o = &overflow{Proxy: Proxy{Content: content}, Background: back}
|
||||||
o.hor = BuildScrollbar(OrientationHorizontal, func(*Scrollbar) {})
|
o.hor = BuildScrollbar(OrientationHorizontal, func(*Scrollbar) {})
|
||||||
o.ver = BuildScrollbar(OrientationVertical, func(*Scrollbar) {})
|
o.ver = BuildScrollbar(OrientationVertical, func(*Scrollbar) {})
|
||||||
@ -152,3 +158,10 @@ func (o *overflow) Render(ctx Context) {
|
|||||||
bar.Render(ctx)
|
bar.Render(ctx)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *overflow) SetScrollbarColor(bar color.Color, hover color.Color) {
|
||||||
|
o.hor.BarColor = bar
|
||||||
|
o.hor.BarHoverColor = hover
|
||||||
|
o.ver.BarColor = bar
|
||||||
|
o.ver.BarHoverColor = hover
|
||||||
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package ui
|
package ui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"image/color"
|
||||||
|
|
||||||
"opslag.de/schobers/geom"
|
"opslag.de/schobers/geom"
|
||||||
"opslag.de/schobers/zntg"
|
"opslag.de/schobers/zntg"
|
||||||
)
|
)
|
||||||
@ -10,6 +12,8 @@ type Scrollbar struct {
|
|||||||
|
|
||||||
Orientation Orientation
|
Orientation Orientation
|
||||||
|
|
||||||
|
BarColor color.Color
|
||||||
|
BarHoverColor color.Color
|
||||||
ContentLength float32
|
ContentLength float32
|
||||||
ContentOffset float32
|
ContentOffset float32
|
||||||
|
|
||||||
@ -58,7 +62,7 @@ func (s *Scrollbar) Handle(ctx Context, e Event) bool {
|
|||||||
|
|
||||||
func (s *Scrollbar) Render(ctx Context) {
|
func (s *Scrollbar) Render(ctx Context) {
|
||||||
ctx.Renderer().FillRectangle(s.bounds, zntg.RGBA(0, 0, 0, 1))
|
ctx.Renderer().FillRectangle(s.bounds, zntg.RGBA(0, 0, 0, 1))
|
||||||
s.handle.Render(ctx)
|
s.handle.Render(ctx, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Scrollbar) updateBar(ctx Context) {
|
func (s *Scrollbar) updateBar(ctx Context) {
|
||||||
@ -83,12 +87,22 @@ type ScrollbarHandle struct {
|
|||||||
ControlBase
|
ControlBase
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ScrollbarHandle) Render(ctx Context) {
|
func (h *ScrollbarHandle) Render(ctx Context, s *Scrollbar) {
|
||||||
h.RenderBackground(ctx)
|
h.RenderBackground(ctx)
|
||||||
p := ctx.Style().Palette
|
p := ctx.Style().Palette
|
||||||
fill := p.Primary
|
var fill color.Color
|
||||||
if h.over {
|
if h.over {
|
||||||
fill = p.PrimaryLight
|
if s.BarHoverColor == nil {
|
||||||
|
fill = p.PrimaryLight
|
||||||
|
} else {
|
||||||
|
fill = s.BarHoverColor
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if s.BarColor == nil {
|
||||||
|
fill = p.Primary
|
||||||
|
} else {
|
||||||
|
fill = s.BarColor
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ctx.Renderer().FillRectangle(h.bounds.Inset(1), fill)
|
ctx.Renderer().FillRectangle(h.bounds.Inset(1), fill)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user