widget: report whether Value changed after Enum.Update and Bool.Update

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-05-05 11:33:41 +02:00
parent 05efb9b5f4
commit f08568a6df
2 changed files with 10 additions and 4 deletions
+5 -2
View File
@@ -14,8 +14,10 @@ type Bool struct {
gesture gesture.Click
}
// Update the checked state according to incoming events.
func (b *Bool) Update(gtx *layout.Context) {
// Update the checked state according to incoming events,
// and reports whether Value changed.
func (b *Bool) Update(gtx *layout.Context) bool {
was := b.Value
for _, e := range b.gesture.Events(gtx) {
switch e.Type {
case gesture.TypeClick:
@@ -26,6 +28,7 @@ func (b *Bool) Update(gtx *layout.Context) {
b.Value = !b.Value
}
}
return b.Value != was
}
func (b *Bool) Layout(gtx *layout.Context) {
+5 -2
View File
@@ -21,8 +21,10 @@ func index(vs []string, t string) int {
return -1
}
// Update the Value according to incoming events.
func (e *Enum) Update(gtx *layout.Context) {
// Update the Value according to incoming events, and
// reports whether Value changed.
func (e *Enum) Update(gtx *layout.Context) bool {
was := e.Value
for i := range e.clicks {
for _, ev := range e.clicks[i].Events(gtx) {
switch ev.Type {
@@ -31,6 +33,7 @@ func (e *Enum) Update(gtx *layout.Context) {
}
}
}
return e.Value != was
}
// Layout adds the event handler for key.