From 2e77d969b19f320ea6a890895693215ebe63a187 Mon Sep 17 00:00:00 2001 From: jefvel Date: Thu, 26 Jan 2023 19:52:20 +0100 Subject: [PATCH 1/2] Made mousemove events work when clicking and then dragging outside the game window. --- scripts/device/iOS.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/scripts/device/iOS.js b/scripts/device/iOS.js index decd777d..c46f0ec8 100644 --- a/scripts/device/iOS.js +++ b/scripts/device/iOS.js @@ -312,8 +312,6 @@ function positionHandler(e) case 'MSPointerUp': case 'pointercancel': case 'MSPointerCancel': - case 'pointerout': - case 'MSPointerOut': mouseDevice = getExistingMouseDevice(e["pointerId"]); // RK :: Wallpaper Engine on Windows is not generating the "pointerdown" event it jumps straight to "pointerover", // to work around this we pretend this is the "pointerdown" then everything starts to work. @@ -416,8 +414,13 @@ function positionHandler(e) } } // end if - // Don't allow the user to move the page around - e.preventDefault(); + // Don't prevent default on first pointerdown event, + // otherwise pointerup events wont be triggered if the + // user releases the mouse outside the game canvas. + if (e.type != "pointerdown") { + // Don't allow the user to move the page around + e.preventDefault(); + } } // ############################################################################################# @@ -433,17 +436,15 @@ function bindTouchEvents() if ((window.PointerEvent) || (window.navigator.pointerEnabled)||(window.navigator.msPointerEnabled)) { canvas.addEventListener( "pointerdown", positionHandler, false ); - canvas.addEventListener( "pointermove", positionHandler, false ); + window.addEventListener( "pointermove", positionHandler, false ); canvas.addEventListener( "pointerup", positionHandler, false ); canvas.addEventListener( "pointercancel", positionHandler, false ); canvas.addEventListener( "pointerover", positionHandler, false ); - canvas.addEventListener( "pointerout", positionHandler, false ); canvas.addEventListener( "MSPointerDown", positionHandler, false ); canvas.addEventListener( "MSPointerMove", positionHandler, false ); - canvas.addEventListener( "MSPointerUp", positionHandler, false ); + window.addEventListener( "MSPointerUp", positionHandler, false ); canvas.addEventListener( "MSPointerCancel", positionHandler, false ); canvas.addEventListener( "MSPointerOver", positionHandler, false ); - canvas.addEventListener( "MSPointerOut", positionHandler, false ); } // end if else { From faf940afdcad60970f52ef1d5bfa54ea74571a3c Mon Sep 17 00:00:00 2001 From: jefvel Date: Thu, 26 Jan 2023 20:01:53 +0100 Subject: [PATCH 2/2] changed comment --- scripts/device/iOS.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/device/iOS.js b/scripts/device/iOS.js index c46f0ec8..058a7107 100644 --- a/scripts/device/iOS.js +++ b/scripts/device/iOS.js @@ -414,7 +414,7 @@ function positionHandler(e) } } // end if - // Don't prevent default on first pointerdown event, + // Don't prevent default on pointerdown events, // otherwise pointerup events wont be triggered if the // user releases the mouse outside the game canvas. if (e.type != "pointerdown") {