forked from joejulian/gio
widget: [API] re-implement Clickable.Focus with a command
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
+2
-7
@@ -23,7 +23,6 @@ type Clickable struct {
|
||||
history []Press
|
||||
|
||||
keyTag struct{}
|
||||
requestFocus bool
|
||||
requestClicks int
|
||||
focused bool
|
||||
pressedKey string
|
||||
@@ -79,8 +78,8 @@ func (b *Clickable) Pressed() bool {
|
||||
}
|
||||
|
||||
// Focus requests the input focus for the element.
|
||||
func (b *Clickable) Focus() {
|
||||
b.requestFocus = true
|
||||
func (b *Clickable) Focus(gtx layout.Context) {
|
||||
gtx.Queue(key.FocusCmd{Tag: &b.keyTag})
|
||||
}
|
||||
|
||||
// Focused reports whether b has focus.
|
||||
@@ -121,10 +120,6 @@ func (b *Clickable) Update(gtx layout.Context) []Click {
|
||||
if !gtx.Enabled() {
|
||||
b.focused = false
|
||||
}
|
||||
if b.requestFocus {
|
||||
gtx.Queue(key.FocusCmd{Tag: &b.keyTag})
|
||||
b.requestFocus = false
|
||||
}
|
||||
for len(b.history) > 0 {
|
||||
c := b.history[0]
|
||||
if c.End.IsZero() || gtx.Now.Sub(c.End) < 1*time.Second {
|
||||
|
||||
@@ -37,7 +37,7 @@ func TestClickable(t *testing.T) {
|
||||
r.Frame(gtx.Ops)
|
||||
}
|
||||
// frame: request focus for button 1
|
||||
b1.Focus()
|
||||
b1.Focus(gtx)
|
||||
frame()
|
||||
// frame: gain focus for button 1
|
||||
frame()
|
||||
@@ -77,7 +77,7 @@ func TestClickable(t *testing.T) {
|
||||
t.Error("button 1 got clicked, even if it only got return press")
|
||||
}
|
||||
// frame: request focus for button 2
|
||||
b2.Focus()
|
||||
b2.Focus(gtx)
|
||||
frame()
|
||||
// frame: gain focus for button 2
|
||||
frame()
|
||||
|
||||
Reference in New Issue
Block a user