MCPcopy Create free account
hub / github.com/gioui/gio / Deliver

Method Deliver

io/input/pointer.go:682–715  ·  view source on GitHub ↗

Deliver is like Push, but delivers an event to a particular area.

(handlers map[event.Tag]*handler, areaIdx int, e pointer.Event)

Source from the content-addressed store, hash-verified

680
681// Deliver is like Push, but delivers an event to a particular area.
682func (q *pointerQueue) Deliver(handlers map[event.Tag]*handler, areaIdx int, e pointer.Event) []taggedEvent {
683 scroll := e.Scroll
684 idx := len(q.hitTree) - 1
685 // Locate first potential receiver.
686 for idx != -1 {
687 n := &q.hitTree[idx]
688 if n.area == areaIdx {
689 break
690 }
691 idx--
692 }
693 var evts []taggedEvent
694 for idx != -1 {
695 n := &q.hitTree[idx]
696 idx = n.next
697 h, ok := handlers[n.tag]
698 if !ok || !h.filter.pointer.Matches(e) {
699 continue
700 }
701 e := e
702 if e.Kind == pointer.Scroll {
703 if scroll == (f32.Point{}) {
704 break
705 }
706 scroll, e.Scroll = h.filter.pointer.clampScroll(scroll)
707 }
708 e.Position = q.invTransform(h.pointer.areaPlusOne-1, e.Position)
709 evts = append(evts, taggedEvent{tag: n.tag, event: e})
710 if e.Kind != pointer.Scroll {
711 break
712 }
713 }
714 return evts
715}
716
717// SemanticArea returns the sematic content for area, and its parent area.
718func (q *pointerQueue) SemanticArea(areaIdx int) (semanticContent, int) {

Callers 2

ScrollFocusMethod · 0.80
ClickFocusMethod · 0.80

Calls 3

invTransformMethod · 0.95
clampScrollMethod · 0.80
MatchesMethod · 0.45

Tested by

no test coverage detected