io/key: [API] introduce FocusFilter for matching focus and editor events

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2023-10-19 18:31:07 -05:00
parent 12a0ad7038
commit 73c3849da4
8 changed files with 127 additions and 60 deletions
+1 -1
View File
@@ -162,7 +162,7 @@ func (b *Clickable) Update(gtx layout.Context) []Click {
})
}
}
for _, e := range gtx.Events(&b.keyTag) {
for _, e := range gtx.Events(&b.keyTag, key.FocusFilter{}) {
switch e := e.(type) {
case key.FocusEvent:
b.focused = e.Focus
+1 -1
View File
@@ -332,7 +332,7 @@ func (e *Editor) processKey(gtx layout.Context) {
}
// adjust keeps track of runes dropped because of MaxLen.
var adjust int
for _, ke := range gtx.Events(&e.eventKey, transfer.TargetFilter{Type: "application/text"}) {
for _, ke := range gtx.Events(&e.eventKey, transfer.TargetFilter{Type: "application/text"}, key.FocusFilter{}) {
e.blinkStart = gtx.Now
switch ke := ke.(type) {
case key.FocusEvent:
+1 -1
View File
@@ -59,7 +59,7 @@ func (e *Enum) Update(gtx layout.Context) bool {
}
}
}
for _, ev := range gtx.Events(&state.tag) {
for _, ev := range gtx.Events(&state.tag, key.FocusFilter{}) {
switch ev := ev.(type) {
case key.FocusEvent:
if ev.Focus {
+1 -1
View File
@@ -304,7 +304,7 @@ func (e *Selectable) clickDragEvents(gtx layout.Context) []event.Event {
}
func (e *Selectable) processKey(gtx layout.Context) {
for _, ke := range gtx.Events(e) {
for _, ke := range gtx.Events(e, key.FocusFilter{}) {
switch ke := ke.(type) {
case key.FocusEvent:
e.focused = ke.Focus