Merge pull request #13770 from ahocevar/tracked-pointers
Clean up tracked pointers when the event target has changed
This commit is contained in:
@@ -195,6 +195,16 @@ class PointerInteraction extends Interaction {
|
|||||||
const id = event.pointerId.toString();
|
const id = event.pointerId.toString();
|
||||||
if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {
|
if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {
|
||||||
delete this.trackedPointers_[id];
|
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) {
|
} else if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {
|
||||||
this.trackedPointers_[id] = event;
|
this.trackedPointers_[id] = event;
|
||||||
} else if (id in this.trackedPointers_) {
|
} else if (id in this.trackedPointers_) {
|
||||||
|
|||||||
Reference in New Issue
Block a user