Merge pull request #13770 from ahocevar/tracked-pointers

Clean up tracked pointers when the event target has changed
This commit is contained in:
Andreas Hocevar
2022-06-15 16:07:34 +02:00
committed by GitHub

View File

@@ -195,6 +195,16 @@ class PointerInteraction extends Interaction {
const id = event.pointerId.toString();
if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {
delete this.trackedPointers_[id];
for (const pointerId in this.trackedPointers_) {
if (this.trackedPointers_[pointerId].target !== event.target) {
// Some platforms assign a new pointerId when the target changes.
// If this happens, delete one tracked pointer. If there is more
// than one tracked pointer for the old target, it will be cleared
// by subsequent POINTERUP events from other pointers.
delete this.trackedPointers_[pointerId];
break;
}
}
} else if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {
this.trackedPointers_[id] = event;
} else if (id in this.trackedPointers_) {