diff --git a/frontend/dcViewer.js b/frontend/dcViewer.js index 714b960..57ee181 100644 --- a/frontend/dcViewer.js +++ b/frontend/dcViewer.js @@ -259,11 +259,29 @@ const normalizeZoomSpeed = (value) => { return Math.min(100, Math.max(5, Math.round(numeric))); }; +const configureCameraPanMap = (control) => { + const input = viewer?.scene?.input; + if (!control || !input) return; + if (control.MOUSE_PAN === undefined || control.MOUSE_ROTATE === undefined || control.MOUSE_DOLLY === undefined) return; + + control.panRightClick = true; + control.keyMap = { + ...(control.keyMap || {}), + [control.MOUSE_PAN]: [ + [input.MOUSE_LEFT_BUTTON, input.KEY_SHIFT], + input.MOUSE_MIDDLE_BUTTON, + input.MOUSE_RIGHT_BUTTON, + ], + [control.MOUSE_ROTATE]: [input.MOUSE_LEFT_BUTTON], + [control.MOUSE_DOLLY]: [], + }; +}; + const configureCameraControl = () => { const control = viewer?.cameraControl; if (!control) return; activeZoomSpeed = normalizeZoomSpeed(activeZoomSpeed); - control.panRightClick = false; + configureCameraPanMap(control); control.followPointer = true; control.doublePickFlyTo = false; control.smartPivot = true; @@ -2651,6 +2669,9 @@ const initViewer = async () => { const canvasEl = viewer.scene?.canvas?.canvas; if (canvasEl) { let downPos = null; + canvasEl.addEventListener("contextmenu", (event) => { + event.preventDefault(); + }); canvasEl.addEventListener("pointerdown", (event) => { if (measureActive) { downPos = null; diff --git a/frontend/index.html b/frontend/index.html index a812de4..0e26f3d 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -239,6 +239,6 @@ - +