diff --git a/widget/enum.go b/widget/enum.go index 39d1eb3c..883d0c26 100644 --- a/widget/enum.go +++ b/widget/enum.go @@ -10,7 +10,8 @@ import ( ) type Enum struct { - Value string + Value string + Hovered string changed bool @@ -56,6 +57,12 @@ func (e *Enum) Layout(gtx layout.Context, key string) layout.Dimensions { } } } + if e.Hovered == key { + e.Hovered = "" + } + if clk.Hovered() { + e.Hovered = key + } clk.Add(gtx.Ops) } diff --git a/widget/material/radiobutton.go b/widget/material/radiobutton.go index 1c4f2a88..24e9537d 100644 --- a/widget/material/radiobutton.go +++ b/widget/material/radiobutton.go @@ -36,7 +36,7 @@ func RadioButton(th *Theme, group *widget.Enum, key, label string) RadioButtonSt // Layout updates enum and displays the radio button. func (r RadioButtonStyle) Layout(gtx layout.Context) layout.Dimensions { - dims := r.layout(gtx, r.Group.Value == r.Key, false) + dims := r.layout(gtx, r.Group.Value == r.Key, r.Group.Hovered == r.Key) gtx.Constraints.Min = dims.Size r.Group.Layout(gtx, r.Key) return dims