From ffb649ecbd91b22e9d36e11bea677ec8ea0f96c3 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:41:45 +0200 Subject: [PATCH] fix(core): allow pinch-zoom if preventScrolling is disabled --- packages/core/src/container/Viewport/Viewport.vue | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/core/src/container/Viewport/Viewport.vue b/packages/core/src/container/Viewport/Viewport.vue index e61a7272..d2bdf064 100644 --- a/packages/core/src/container/Viewport/Viewport.vue +++ b/packages/core/src/container/Viewport/Viewport.vue @@ -255,6 +255,14 @@ onMounted(() => { return false } + const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value + const pinchZoom = zoomOnPinch.value && event.ctrlKey + + const scrollEventEnabled = !preventScrolling.value || shouldPanOnScroll.value || zoomScroll || pinchZoom + + if (!scrollEventEnabled) { + return false + } event.preventDefault() event.stopImmediatePropagation() @@ -323,7 +331,9 @@ onMounted(() => { d3Selection.on( 'wheel.zoom', function (this: any, event: WheelEvent, d: any) { - if (!preventScrolling.value || isWrappedWithClass(event, noWheelClassName.value)) { + // we still want to enable pinch zooming even if preventScrolling is set to false + const invalidEvent = !preventScrolling.value && event.type === 'wheel' && !event.ctrlKey + if (invalidEvent || isWrappedWithClass(event, noWheelClassName.value)) { return null }