layout,io/input: [API] change Context.Disabled to only disable events

Also unexport Source.Enabled because the nil-ness of its embedded router
is now an implementation detail.

Fixes: https://todo.sr.ht/~eliasnaur/gio/605
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2024-08-01 11:30:25 +02:00
parent 8cf449034c
commit 6c6cc157c4
2 changed files with 22 additions and 8 deletions
+17 -3
View File
@@ -5,6 +5,7 @@ package layout
import (
"time"
"gioui.org/io/event"
"gioui.org/io/input"
"gioui.org/io/system"
"gioui.org/op"
@@ -28,6 +29,7 @@ type Context struct {
// Interested users must look up and populate these values manually.
Locale system.Locale
disabled bool
input.Source
*op.Ops
}
@@ -42,9 +44,21 @@ func (c Context) Sp(v unit.Sp) int {
return c.Metric.Sp(v)
}
// Disabled returns a copy of this context with a disabled Source,
// blocking widgets from changing its state and receiving events.
func (c Context) Event(filters ...event.Filter) (event.Event, bool) {
if c.disabled {
return nil, false
}
return c.Source.Event(filters...)
}
// Enabled reports whether this context is enabled. Disabled contexts
// don't report events.
func (c Context) Enabled() bool {
return !c.disabled
}
// Disabled returns a copy of this context that don't deliver any events.
func (c Context) Disabled() Context {
c.Source = input.Source{}
c.disabled = true
return c
}