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") {
|
||||
for (let i = 0; i < ev.changedTouches.length; i++) {
|
||||
const index = this._currentTouches.findIndex(t => t.event.identifier === ev.changedTouches[i].identifier);
|
||||
if (index !== -1) {
|
||||
this._currentTouches[index].status = "POINTER_UP";
|
||||
}
|
||||
const indexes = this._getAllIndexes(this._currentTouches, (t) => t.event.identifier === ev.changedTouches[i].identifier)
|
||||
indexes.forEach((index) => 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) {
|
||||
let tev = new CustomEvent('ultravnctouch', { event: ev, detail: { currentTouches: this._currentTouches, giiDeviceOrigin: this._giiDeviceOrigin } });
|
||||
this._target.dispatchEvent(tev);
|
||||
|
|
Loading…
Reference in New Issue