mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 07:35:40 +00:00
6c6cc157c4
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>
65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
// SPDX-License-Identifier: Unlicense OR MIT
|
|
|
|
package layout
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gioui.org/io/event"
|
|
"gioui.org/io/input"
|
|
"gioui.org/io/system"
|
|
"gioui.org/op"
|
|
"gioui.org/unit"
|
|
)
|
|
|
|
// Context carries the state needed by almost all layouts and widgets.
|
|
// A zero value Context never returns events, map units to pixels
|
|
// with a scale of 1.0, and returns the zero time from Now.
|
|
type Context struct {
|
|
// Constraints track the constraints for the active widget or
|
|
// layout.
|
|
Constraints Constraints
|
|
|
|
Metric unit.Metric
|
|
// Now is the animation time.
|
|
Now time.Time
|
|
|
|
// Locale provides information on the system's language preferences.
|
|
// BUG(whereswaldon): this field is not currently populated automatically.
|
|
// Interested users must look up and populate these values manually.
|
|
Locale system.Locale
|
|
|
|
disabled bool
|
|
input.Source
|
|
*op.Ops
|
|
}
|
|
|
|
// Dp converts v to pixels.
|
|
func (c Context) Dp(v unit.Dp) int {
|
|
return c.Metric.Dp(v)
|
|
}
|
|
|
|
// Sp converts v to pixels.
|
|
func (c Context) Sp(v unit.Sp) int {
|
|
return c.Metric.Sp(v)
|
|
}
|
|
|
|
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.disabled = true
|
|
return c
|
|
}
|