Fix touches with same id not being removed properly
This commit is contained in:
parent
8af21c7082
commit
b673af9925
|
@ -88,14 +88,20 @@ export default class TouchHandlerUltraVNC {
|
||||||
}
|
}
|
||||||
} else if (ev.type === "touchend" || ev.type === "touchcancel") {
|
} else if (ev.type === "touchend" || ev.type === "touchcancel") {
|
||||||
for (let i = 0; i < ev.changedTouches.length; i++) {
|
for (let i = 0; i < ev.changedTouches.length; i++) {
|
||||||
const index = this._currentTouches.findIndex(t => t.event.identifier === ev.changedTouches[i].identifier);
|
const indexes = this._getAllIndexes(this._currentTouches, (t) => t.event.identifier === ev.changedTouches[i].identifier)
|
||||||
if (index !== -1) {
|
indexes.forEach((index) => this._currentTouches[index].status = "POINTER_UP");
|
||||||
this._currentTouches[index].status = "POINTER_UP";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_getAllIndexes(arr, func) {
|
||||||
|
var indexes = [], i;
|
||||||
|
for (i = 0; i < arr.length; i++)
|
||||||
|
if (func(arr[i]))
|
||||||
|
indexes.push(i);
|
||||||
|
return indexes;
|
||||||
|
}
|
||||||
|
|
||||||
_dispatchTouchEvent(ev) {
|
_dispatchTouchEvent(ev) {
|
||||||
let tev = new CustomEvent('ultravnctouch', { event: ev, detail: { currentTouches: this._currentTouches, giiDeviceOrigin: this._giiDeviceOrigin } });
|
let tev = new CustomEvent('ultravnctouch', { event: ev, detail: { currentTouches: this._currentTouches, giiDeviceOrigin: this._giiDeviceOrigin } });
|
||||||
this._target.dispatchEvent(tev);
|
this._target.dispatchEvent(tev);
|
||||||
|
|
Loading…
Reference in New Issue