Use clientXY and not pageXY for touch screens. Should work better :)
authorBenjamin Auder <benjamin.auder@somewhere>
Tue, 21 Apr 2020 13:20:15 +0000 (15:20 +0200)
committerBenjamin Auder <benjamin.auder@somewhere>
Tue, 21 Apr 2020 13:20:15 +0000 (15:20 +0200)
client/src/components/Board.vue

index 88a3419..48bdd87 100644 (file)
@@ -675,12 +675,7 @@ export default {
       // Cancel if off boardContainer
       const [offsetX, offsetY] =
         this.mobileBrowser
-          ?
-            [
-              e.changedTouches[0].pageX,
-              // TODO: fixing attempt for smartphones, removing window.scrollY
-              e.changedTouches[0].pageY - window.scrollY
-            ]
+          ? [e.changedTouches[0].clientX, e.changedTouches[0].clientY]
           : [e.clientX, e.clientY];
       if (
         offsetX < this.containerPos.left ||
@@ -760,11 +755,7 @@ export default {
       // Obtain the move from start and end squares
       const [offsetX, offsetY] =
         this.mobileBrowser
-          ?
-            [
-              e.changedTouches[0].pageX,
-              e.changedTouches[0].pageY - window.scrollY
-            ]
+          ? [e.changedTouches[0].clientX, e.changedTouches[0].clientY]
           : [e.clientX, e.clientY];
       let landing = document.elementFromPoint(offsetX, offsetY);
       // Next condition: classList.contains(piece) fails because of marks