From b0514000ff65f2f3d800bed432cd253be81c85ec Mon Sep 17 00:00:00 2001 From: 1ilit <1ilit@proton.me> Date: Sun, 31 Aug 2025 00:18:15 +0400 Subject: [PATCH] Fix area resize in one direction (#569) --- src/components/EditorCanvas/Canvas.jsx | 27 +++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/components/EditorCanvas/Canvas.jsx b/src/components/EditorCanvas/Canvas.jsx index 82cb7b4..d96433d 100644 --- a/src/components/EditorCanvas/Canvas.jsx +++ b/src/components/EditorCanvas/Canvas.jsx @@ -280,23 +280,22 @@ export default function Canvas() { if (!e.isPrimary) return; - if (panning.isPanning) { setTransform((prev) => ({ ...prev, pan: { x: - panning.panStart.x + - (panning.cursorStart.x - pointer.spaces.screen.x) / transform.zoom, + panning.panStart.x + + (panning.cursorStart.x - pointer.spaces.screen.x) / transform.zoom, y: - panning.panStart.y + - (panning.cursorStart.y - pointer.spaces.screen.y) / transform.zoom, + panning.panStart.y + + (panning.cursorStart.y - pointer.spaces.screen.y) / transform.zoom, }, })); return; } - if(layout.readOnly) return; + if (layout.readOnly) return; if (linking) { setLinkingLine({ @@ -377,7 +376,21 @@ export default function Canvas() { break; } - if(newDims.width < minAreaSize || newDims.height < minAreaSize) return; + if (newDims.width <= minAreaSize) { + newDims.width = minAreaSize; + if (areaResize.dir === "tl" || areaResize.dir === "bl") { + newDims.x = + areaInitDimensions.x + areaInitDimensions.width - minAreaSize; + } + } + + if (newDims.height <= minAreaSize) { + newDims.height = minAreaSize; + if (areaResize.dir === "tl" || areaResize.dir === "tr") { + newDims.y = + areaInitDimensions.y + areaInitDimensions.height - minAreaSize; + } + } updateArea(areaResize.id, { ...newDims }); return;