From d7a948baa069b603d2e6ce0bc80c510ac19861b8 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Wed, 23 Aug 2023 12:32:48 +0400 Subject: [PATCH] Up document scroll for pointer --- src/canvas/view/CanvasView.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/canvas/view/CanvasView.ts b/src/canvas/view/CanvasView.ts index eedee1dae..86029c9fd 100644 --- a/src/canvas/view/CanvasView.ts +++ b/src/canvas/view/CanvasView.ts @@ -169,17 +169,18 @@ export default class CanvasView extends ModuleView { if (!this.config.infiniteCanvas) return; const canvasRect = this.getCanvasOffset(); + const docScroll = getDocumentScroll(); const screenCoords: Coordinates = { - x: ev.clientX - canvasRect.left, - y: ev.clientY - canvasRect.top, + x: ev.clientX - canvasRect.left + docScroll.x, + y: ev.clientY - canvasRect.top + docScroll.y, }; if ((ev as any)._parentEvent) { // with _parentEvent means was triggered from the iframe const frameRect = (ev.target as HTMLElement).getBoundingClientRect(); const zoom = this.module.getZoomDecimal(); - screenCoords.x = frameRect.left - canvasRect.left + ev.clientX * zoom; - screenCoords.y = frameRect.top - canvasRect.top + ev.clientY * zoom; + screenCoords.x = frameRect.left - canvasRect.left + docScroll.x + ev.clientX * zoom; + screenCoords.y = frameRect.top - canvasRect.top + docScroll.y + ev.clientY * zoom; } this.model.set({ @@ -362,8 +363,9 @@ export default class CanvasView extends ModuleView { const frameX = frameRect?.x ?? 0; const frameY = frameRect?.y ?? 0; const canvasEl = this.el; - const xWithFrame = left + frameX + canvasEl.scrollLeft * zoomMlt; - const yWithFrame = top + frameY + canvasEl.scrollTop * zoomMlt; + const docScroll = getDocumentScroll(); + const xWithFrame = left + frameX + (canvasEl.scrollLeft + docScroll.x) * zoomMlt; + const yWithFrame = top + frameY + (canvasEl.scrollTop + docScroll.y) * zoomMlt; if (opts.toWorld) { const zoom = module.getZoomDecimal();