mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-04 08:55:35 +00:00
all: clean up code, upgrade to modern Go
Signed-off-by: ddkwork
This commit is contained in:
+19
-36
@@ -5,6 +5,7 @@ package input
|
||||
import (
|
||||
"image"
|
||||
"io"
|
||||
"slices"
|
||||
|
||||
"gioui.org/f32"
|
||||
f32internal "gioui.org/internal/f32"
|
||||
@@ -258,13 +259,7 @@ func (q *pointerQueue) grab(state pointerState, req pointer.GrabCmd) (pointerSta
|
||||
continue
|
||||
}
|
||||
// Verify that the grabber is among the handlers.
|
||||
found := false
|
||||
for _, tag := range p.handlers {
|
||||
if tag == req.Tag {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
found := slices.Contains(p.handlers, req.Tag)
|
||||
if !found {
|
||||
continue
|
||||
}
|
||||
@@ -293,17 +288,13 @@ func (c *pointerCollector) inputOp(tag event.Tag, state *pointerHandler) {
|
||||
func (p *pointerFilter) Add(f event.Filter) {
|
||||
switch f := f.(type) {
|
||||
case transfer.SourceFilter:
|
||||
for _, m := range p.sourceMimes {
|
||||
if m == f.Type {
|
||||
return
|
||||
}
|
||||
if slices.Contains(p.sourceMimes, f.Type) {
|
||||
return
|
||||
}
|
||||
p.sourceMimes = append(p.sourceMimes, f.Type)
|
||||
case transfer.TargetFilter:
|
||||
for _, m := range p.targetMimes {
|
||||
if m == f.Type {
|
||||
return
|
||||
}
|
||||
if slices.Contains(p.targetMimes, f.Type) {
|
||||
return
|
||||
}
|
||||
p.targetMimes = append(p.targetMimes, f.Type)
|
||||
case pointer.Filter:
|
||||
@@ -320,16 +311,12 @@ func (p *pointerFilter) Matches(e event.Event) bool {
|
||||
case transfer.CancelEvent, transfer.InitiateEvent:
|
||||
return len(p.sourceMimes) > 0 || len(p.targetMimes) > 0
|
||||
case transfer.RequestEvent:
|
||||
for _, t := range p.sourceMimes {
|
||||
if t == e.Type {
|
||||
return true
|
||||
}
|
||||
if slices.Contains(p.sourceMimes, e.Type) {
|
||||
return true
|
||||
}
|
||||
case transfer.DataEvent:
|
||||
for _, t := range p.targetMimes {
|
||||
if t == e.Type {
|
||||
return true
|
||||
}
|
||||
if slices.Contains(p.targetMimes, e.Type) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
@@ -424,7 +411,7 @@ func (q *pointerQueue) offerData(handlers map[event.Tag]*handler, state pointerS
|
||||
},
|
||||
}})
|
||||
}
|
||||
state.pointers = append([]pointerInfo{}, state.pointers...)
|
||||
state.pointers = slices.Clone(state.pointers)
|
||||
state.pointers[i], evts = q.deliverTransferCancelEvent(handlers, p, evts)
|
||||
break
|
||||
}
|
||||
@@ -616,7 +603,7 @@ func (q *pointerQueue) reset() {
|
||||
for k, ids := range q.semantic.contentIDs {
|
||||
for i := len(ids) - 1; i >= 0; i-- {
|
||||
if !ids[i].used {
|
||||
ids = append(ids[:i], ids[i+1:]...)
|
||||
ids = slices.Delete(ids, i, i+1)
|
||||
} else {
|
||||
ids[i].used = false
|
||||
}
|
||||
@@ -647,7 +634,7 @@ func (q *pointerQueue) Frame(handlers map[event.Tag]*handler, state pointerState
|
||||
changed := false
|
||||
p, evts, state.cursor, changed = q.deliverEnterLeaveEvents(handlers, state.cursor, p, evts, p.last)
|
||||
if changed {
|
||||
state.pointers = append([]pointerInfo{}, state.pointers...)
|
||||
state.pointers = slices.Clone(state.pointers)
|
||||
state.pointers[i] = p
|
||||
}
|
||||
}
|
||||
@@ -783,9 +770,9 @@ func (q *pointerQueue) Push(handlers map[event.Tag]*handler, state pointerState,
|
||||
|
||||
if !p.pressed && len(p.entered) == 0 {
|
||||
// No longer need to track pointer.
|
||||
state.pointers = append(state.pointers[:pidx:pidx], state.pointers[pidx+1:]...)
|
||||
state.pointers = slices.Concat(state.pointers[:pidx:pidx], state.pointers[pidx+1:])
|
||||
} else {
|
||||
state.pointers = append([]pointerInfo{}, state.pointers...)
|
||||
state.pointers = slices.Clone(state.pointers)
|
||||
state.pointers[pidx] = p
|
||||
}
|
||||
return state, evts
|
||||
@@ -975,10 +962,8 @@ func searchTag(tags []event.Tag, tag event.Tag) (int, bool) {
|
||||
|
||||
// addHandler adds tag to the slice if not present.
|
||||
func addHandler(tags []event.Tag, tag event.Tag) []event.Tag {
|
||||
for _, t := range tags {
|
||||
if t == tag {
|
||||
return tags
|
||||
}
|
||||
if slices.Contains(tags, tag) {
|
||||
return tags
|
||||
}
|
||||
return append(tags, tag)
|
||||
}
|
||||
@@ -986,10 +971,8 @@ func addHandler(tags []event.Tag, tag event.Tag) []event.Tag {
|
||||
// firstMimeMatch returns the first type match between src and tgt.
|
||||
func firstMimeMatch(src, tgt *pointerFilter) (first string, matched bool) {
|
||||
for _, m1 := range tgt.targetMimes {
|
||||
for _, m2 := range src.sourceMimes {
|
||||
if m1 == m2 {
|
||||
return m1, true
|
||||
}
|
||||
if slices.Contains(src.sourceMimes, m1) {
|
||||
return m1, true
|
||||
}
|
||||
}
|
||||
return "", false
|
||||
|
||||
Reference in New Issue
Block a user