From c07cce4fb0e619f82f649d9ab1725e0c02fbbfc9 Mon Sep 17 00:00:00 2001 From: dimitrieh Date: Tue, 30 Sep 2025 12:47:10 +0200 Subject: [PATCH] Make Alt/Space scroll zoom speed match trackpad pinch zoom Alt+scroll and Space+scroll were using fixed zoom steps (0.06/0.08), making them zoom much faster than trackpad pinch zoom which uses proportional scaling (0.005 * delta). Changed to use trackpad-style proportional zoom for consistent feel across all zoom input methods. --- .../@node-red/editor-client/src/js/ui/view.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index a0dcfcd1f..2b7c48965 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -849,11 +849,12 @@ RED.view = (function() { }, gestureEndThreshold); // Use 500ms timeout for gesture end detection } else { // Regular Alt+scroll or Space+scroll - use smooth zoom without animation - // Use the zoom animator's delta calculation for mouse wheel - var scaleDelta = RED.view.zoomAnimator.calculateZoomDelta(scaleFactor, -delta, false); - var newScale = Math.min(RED.view.zoomConstants.MAX_ZOOM, - Math.max(RED.view.zoomConstants.MIN_ZOOM, scaleFactor + scaleDelta)); - + // Use same proportional zoom as trackpad for consistent feel + var scaleDelta = RED.view.zoomAnimator.calculateZoomDelta(scaleFactor, -delta, true); + var minZoom = calculateMinZoom(); + var newScale = Math.min(RED.view.zoomConstants.MAX_ZOOM, + Math.max(minZoom, scaleFactor + scaleDelta)); + // Only zoom if scale is actually changing if (Math.abs(scaleFactor - newScale) >= 0.001) { zoomView(newScale, cursorPos); // Direct call, no animation for smoother feel