From ec4f2d634e28bf8b9da75880ed51d5b4beed44ac Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sat, 10 Feb 2024 10:31:34 +0400 Subject: [PATCH] Take into account borders during a component move. Fixes #5621 Closes #5622 --- src/canvas/view/CanvasView.ts | 8 ++++++++ src/utils/Sorter.ts | 10 +++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/canvas/view/CanvasView.ts b/src/canvas/view/CanvasView.ts index ce5f240ac..6cc3be6ca 100644 --- a/src/canvas/view/CanvasView.ts +++ b/src/canvas/view/CanvasView.ts @@ -29,6 +29,10 @@ export interface MarginPaddingOffsets { paddingRight?: number; paddingBottom?: number; paddingLeft?: number; + borderTopWidth?: number; + borderRightWidth?: number; + borderBottomWidth?: number; + borderLeftWidth?: number; } export type ElementPosOpts = { @@ -516,6 +520,10 @@ export default class CanvasView extends ModuleView { 'paddingRight', 'paddingBottom', 'paddingLeft', + 'borderTopWidth', + 'borderRightWidth', + 'borderBottomWidth', + 'borderLeftWidth', ]; marginPaddingOffsets.forEach(offset => { result[offset] = parseFloat(styles[offset]) * zoom; diff --git a/src/utils/Sorter.ts b/src/utils/Sorter.ts index 8939f0994..6a2d7ccef 100644 --- a/src/utils/Sorter.ts +++ b/src/utils/Sorter.ts @@ -1097,9 +1097,13 @@ export default class Sorter extends View { const offset = trgDim.offsets || {}; const pT = offset.paddingTop || margI; const pL = offset.paddingLeft || margI; - t = trgDim.top + pT; - l = trgDim.left + pL; - w = parseInt(`${trgDim.width}`) - pL * 2 + un; + const bT = offset.borderTopWidth || 0; + const bL = offset.borderLeftWidth || 0; + const bR = offset.borderRightWidth || 0; + const bWidth = bL + bR; + t = trgDim.top + pT + bT; + l = trgDim.left + pL + bL; + w = parseInt(`${trgDim.width}`) - pL * 2 - bWidth + un; h = 'auto'; } }