diff --git a/public/index.html b/public/index.html
index 51c5c9e..88e55e9 100644
--- a/public/index.html
+++ b/public/index.html
@@ -156,14 +156,15 @@
element.addEventListener("touchstart", this.onTouchStart.bind(this));
}
- onTouchMove({ touches }) {
+ onTouchMove({ preventDefault, touches }) {
+ preventDefault();
for (let i = 0; i < touches.length; i++) {
this.ongoingTouches[touches[i].identifier].hasMoved = true;
}
const targetTouch = touches[0];
- this.currentMoveX = targetTouch.clientX;
- this.currentMoveY = targetTouch.clientY;
+ this.currentMoveX = targetTouch.pageX;
+ this.currentMoveY = targetTouch.pageY;
// When ending a touch and starting a new one in another part of the touchpad,
// the cursor "rubber bands" to that position.
// To solve this, the "last move" parameters are reset when a touch is ended
@@ -179,22 +180,14 @@
this.lastMoveY = this.currentMoveY;
// if two touches moved at the same time, assume scrolling intent
if (touches.length === 2) {
- this.scrollXSum += 1;
- this.scrollYSum += 1;
- if (this.scrollXSum > SCROLL_X_THRESHOLD) {
- this._sendRelativeMouseScroll(deltaX, 0);
- this.scrollXSum = 0;
- }
- if (this.scrollYSum > SCROLL_Y_THRESHOLD) {
- this._sendRelativeMouseScroll(0, deltaY);
- this.scrollYSum = 0;
- }
+ this._sendRelativeMouseScroll(deltaX, deltaY);
} else {
this._sendRelativeMouseMovement(deltaX, deltaY);
}
}
- onTouchEnd({ changedTouches }) {
+ onTouchEnd({ preventDefault, changedTouches }) {
+ preventDefault();
this.shouldResetLastMove = true;
if (changedTouches.length === 1) {
// This is a single tap - left click
@@ -214,7 +207,9 @@
}
}
- onTouchStart({ changedTouches }) {
+ onTouchStart({ preventDefault, changedTouches }) {
+ preventDefault();
+
// Clear the hold mode time out if another touch begins
if (this.holdModeTimeout)
clearTimeout(this.holdModeTimeout);