From f1e266a9e70f49385dd56666cd8a3ca53a48fcc7 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sun, 3 May 2020 21:21:19 +0200 Subject: [PATCH] widget,widget/material: export Enum.Value The Value method both updated the enum value and returned it. In order to access the current value withoutm, expose the Value field of the enum and rename the method to Update. As a bonus we can get rid of the SetValue method as well. Updates gio#96 Signed-off-by: Elias Naur --- widget/enum.go | 29 ++++++++++++----------------- widget/material/radiobutton.go | 4 +++- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/widget/enum.go b/widget/enum.go index 63e35cb8..0b10bada 100644 --- a/widget/enum.go +++ b/widget/enum.go @@ -6,9 +6,10 @@ import ( ) type Enum struct { + Value string + clicks []gesture.Click values []string - value string } func index(vs []string, t string) int { @@ -20,32 +21,26 @@ func index(vs []string, t string) int { return -1 } -// Value processes events and returns the last selected value, or -// the empty string. -func (e *Enum) Value(gtx *layout.Context) string { +// Update the Value according to incoming events. +func (e *Enum) Update(gtx *layout.Context) { for i := range e.clicks { for _, ev := range e.clicks[i].Events(gtx) { switch ev.Type { case gesture.TypeClick: - e.value = e.values[i] + e.Value = e.values[i] } } } - return e.value } // Layout adds the event handler for key. -func (rg *Enum) Layout(gtx *layout.Context, key string) { - if index(rg.values, key) == -1 { - rg.values = append(rg.values, key) - rg.clicks = append(rg.clicks, gesture.Click{}) - rg.clicks[len(rg.clicks)-1].Add(gtx.Ops) +func (e *Enum) Layout(gtx *layout.Context, key string) { + if index(e.values, key) == -1 { + e.values = append(e.values, key) + e.clicks = append(e.clicks, gesture.Click{}) + e.clicks[len(e.clicks)-1].Add(gtx.Ops) } else { - idx := index(rg.values, key) - rg.clicks[idx].Add(gtx.Ops) + idx := index(e.values, key) + e.clicks[idx].Add(gtx.Ops) } } - -func (rg *Enum) SetValue(value string) { - rg.value = value -} diff --git a/widget/material/radiobutton.go b/widget/material/radiobutton.go index a8d53ffd..b44d7a9e 100644 --- a/widget/material/radiobutton.go +++ b/widget/material/radiobutton.go @@ -32,7 +32,9 @@ func RadioButton(th *Theme, key, label string) RadioButtonStyle { } } +// Layout updates enum and displays the radio button. func (r RadioButtonStyle) Layout(gtx *layout.Context, enum *widget.Enum) { - r.layout(gtx, enum.Value(gtx) == r.Key) + enum.Update(gtx) + r.layout(gtx, enum.Value == r.Key) enum.Layout(gtx, r.Key) }