From 7fd6ac58b5b77cdbc40364c38d01175835fbb3e5 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 12 Apr 2022 16:58:11 +0200 Subject: [PATCH] Take into account the canvas scroll offset in getElementPos --- src/canvas/view/CanvasView.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/canvas/view/CanvasView.js b/src/canvas/view/CanvasView.js index 41456e5b0..2801ced35 100644 --- a/src/canvas/view/CanvasView.js +++ b/src/canvas/view/CanvasView.js @@ -209,20 +209,20 @@ export default class CanvasView extends View { */ getElementPos(el, opts) { const zoom = this.getZoom(); - var opt = opts || {}; - var frmOff = this.getFrameOffset(el); - var cvsOff = this.getCanvasOffset(); - var eo = this.offset(el, opts); - - var frmTop = opt.avoidFrameOffset ? 0 : frmOff.top; - var frmLeft = opt.avoidFrameOffset ? 0 : frmOff.left; - - const top = eo.top * zoom + frmTop - cvsOff.top; - const left = eo.left * zoom + frmLeft - cvsOff.left; - const height = eo.height * zoom; - const width = eo.width * zoom; - - return { top, left, height, width, zoom, rect: eo }; + const opt = opts || {}; + const frameOffset = this.getFrameOffset(el); + const canvasEl = this.el; + const canvasOffset = this.getCanvasOffset(); + const elRect = this.offset(el, opts); + const frameTop = opt.avoidFrameOffset ? 0 : frameOffset.top; + const frameLeft = opt.avoidFrameOffset ? 0 : frameOffset.left; + + const top = elRect.top * zoom + frameTop - canvasOffset.top + canvasEl.scrollTop; + const left = elRect.left * zoom + frameLeft - canvasOffset.left + canvasEl.scrollLeft; + const height = elRect.height * zoom; + const width = elRect.width * zoom; + + return { top, left, height, width, zoom, rect: elRect }; } /**