From 18b4b0b220588fb074ba66d85c981b5d12cd46bb Mon Sep 17 00:00:00 2001 From: Owen Diffey Date: Sat, 31 Dec 2022 08:44:00 +0000 Subject: [PATCH] fix: Scrolling to zoom in embedded map causes containing page to scroll (#376) --- .../webapp/src/js/controls/freeflight/FreeFlightControls.js | 4 +++- .../webapp/src/js/controls/map/mouse/MouseZoomControls.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/BlueMapCommon/webapp/src/js/controls/freeflight/FreeFlightControls.js b/BlueMapCommon/webapp/src/js/controls/freeflight/FreeFlightControls.js index 489793eb..d92f44df 100644 --- a/BlueMapCommon/webapp/src/js/controls/freeflight/FreeFlightControls.js +++ b/BlueMapCommon/webapp/src/js/controls/freeflight/FreeFlightControls.js @@ -78,7 +78,7 @@ export class FreeFlightControls { this.target.addEventListener("contextmenu", this.onContextMenu); this.target.addEventListener("mousedown", this.onMouseDown); this.target.addEventListener("mouseup", this.onMouseUp); - window.addEventListener("wheel", this.onWheel, {passive: true}); + window.addEventListener("wheel", this.onWheel, {passive: false}); } stop() { @@ -134,6 +134,8 @@ export class FreeFlightControls { } onWheel = evt => { + evt.preventDefault(); + let delta = evt.deltaY; if (evt.deltaMode === WheelEvent.DOM_DELTA_PIXEL) delta *= 0.01; if (evt.deltaMode === WheelEvent.DOM_DELTA_LINE) delta *= 0.33; diff --git a/BlueMapCommon/webapp/src/js/controls/map/mouse/MouseZoomControls.js b/BlueMapCommon/webapp/src/js/controls/map/mouse/MouseZoomControls.js index c4c7d22e..79aa14de 100644 --- a/BlueMapCommon/webapp/src/js/controls/map/mouse/MouseZoomControls.js +++ b/BlueMapCommon/webapp/src/js/controls/map/mouse/MouseZoomControls.js @@ -48,7 +48,7 @@ export class MouseZoomControls { start(manager) { this.manager = manager; - this.target.addEventListener("wheel", this.onMouseWheel, {passive: true}); + this.target.addEventListener("wheel", this.onMouseWheel, {passive: false}); } stop() { @@ -82,6 +82,8 @@ export class MouseZoomControls { * @param evt {WheelEvent} */ onMouseWheel = evt => { + evt.preventDefault(); + let delta = evt.deltaY; if (evt.deltaMode === WheelEvent.DOM_DELTA_PIXEL) delta *= 0.01; if (evt.deltaMode === WheelEvent.DOM_DELTA_LINE) delta *= 0.33;