uros-b commented on code in PR #56694:
URL: https://github.com/apache/spark/pull/56694#discussion_r3462642558
##########
sql/core/src/main/resources/org/apache/spark/sql/execution/ui/static/spark-sql-viz.js:
##########
@@ -765,6 +770,41 @@ function setupZoomAndPan(svg, zoomLayer) {
// provides the natural fit, and the zoom-layer has no transform, so no
// explicit transform is required here.
updateZoomLevelLabel(1);
+
+ // Remove d3-zoom's wheel listener (which is registered as non-passive and
+ // can block page scrolling) and replace it with a gated wrapper that only
+ // forwards Ctrl/Cmd+wheel to d3, letting unmodified scrolls pass through.
+ var d3WheelHandler = svg.on("wheel.zoom");
+ svg.on("wheel.zoom", null);
+ svgNode.addEventListener("wheel", function (e) {
+ if (e.ctrlKey || e.metaKey) {
+ // Forward to d3-zoom's original handler for zoom behavior
+ d3WheelHandler.call(this, e);
Review Comment:
There is no null-guard before d3WheelHandler.call(this, e). Today
svg.on("wheel.zoom") returns d3's registered handler, so it is defined; but if
a future d3 version stopped registering wheel.zoom, d3WheelHandler would be
undefined and the Ctrl/Cmd path would throw a TypeError. A cheap if
(d3WheelHandler) d3WheelHandler.call(...) guard is worth adding.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]