Merge pull request #4229 from xyflow/fix/react-pan-win-touch

Fix/react pan win touch
This commit is contained in:
Moritz Klack
2024-04-30 17:47:30 +02:00
committed by GitHub
2 changed files with 4 additions and 8 deletions
@@ -78,10 +78,9 @@ export function createPanOnScrollHandler({
event.stopImmediatePropagation(); event.stopImmediatePropagation();
const currentZoom = d3Selection.property('__zoom').k || 1; const currentZoom = d3Selection.property('__zoom').k || 1;
const _isMacOs = isMacOs();
// macos sets ctrlKey=true for pinch gesture on a trackpad // macos sets ctrlKey=true for pinch gesture on a trackpad
if (event.ctrlKey && zoomOnPinch && _isMacOs) { if (event.ctrlKey && zoomOnPinch) {
const point = pointer(event); const point = pointer(event);
const pinchDelta = wheelDelta(event); const pinchDelta = wheelDelta(event);
const zoom = currentZoom * Math.pow(2, pinchDelta); const zoom = currentZoom * Math.pow(2, pinchDelta);
@@ -98,7 +97,7 @@ export function createPanOnScrollHandler({
let deltaY = panOnScrollMode === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize; let deltaY = panOnScrollMode === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;
// this enables vertical scrolling with shift + scroll on windows // this enables vertical scrolling with shift + scroll on windows
if (!_isMacOs && event.shiftKey && panOnScrollMode !== PanOnScrollMode.Vertical) { if (!isMacOs() && event.shiftKey && panOnScrollMode !== PanOnScrollMode.Vertical) {
deltaX = event.deltaY * deltaNormalize; deltaX = event.deltaY * deltaNormalize;
deltaY = 0; deltaY = 0;
} }
@@ -208,6 +207,7 @@ export function createPanZoomEndHandler({
if (event.sourceEvent?.internal) { if (event.sourceEvent?.internal) {
return; return;
} }
zoomPanValues.isZoomingOrPanning = false; zoomPanValues.isZoomingOrPanning = false;
if ( if (
+1 -5
View File
@@ -76,11 +76,7 @@ export function createFilter({
} }
// if the pane is only movable using allowed clicks // if the pane is only movable using allowed clicks
if ( if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') {
Array.isArray(panOnDrag) &&
!panOnDrag.includes(event.button) &&
(event.type === 'mousedown' || event.type === 'touchstart')
) {
return false; return false;
} }