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