Fix touches with same id not being removed properly

This commit is contained in:
Rui Reis 2024-07-31 15:45:33 +02:00
parent 8af21c7082
commit b673af9925
1 changed files with 10 additions and 4 deletions

View File

@ -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);