all: clean up code, upgrade to modern Go

Signed-off-by: ddkwork
This commit is contained in:
Admin
2025-05-05 23:27:04 +08:00
committed by Elias Naur
parent 86668e8b45
commit f73287be87
58 changed files with 413 additions and 241 deletions
+19 -36
View File
@@ -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