From c17eec64035dcfc3b0a61a69f52a5b6fc1f296cf Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Fri, 21 Feb 2025 16:39:57 +0000 Subject: [PATCH] fix: selection, remove blocks when selectedBlock is "air" --- src/components/canvas/Canvas.tsx | 12 +++++++----- src/components/canvas/SelectionBar.tsx | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/canvas/Canvas.tsx b/src/components/canvas/Canvas.tsx index 212b9aa..df33f4c 100644 --- a/src/components/canvas/Canvas.tsx +++ b/src/components/canvas/Canvas.tsx @@ -173,7 +173,7 @@ function Canvas() { [dragging, coords, scale, tool, mouseCoords, onToolUse, setCoords] ); - const onMouseDown = useCallback(() => { + const onPointerDown = useCallback(() => { dragging.current = true; onToolUse(); @@ -187,7 +187,7 @@ function Canvas() { if (tool === "rectangle-select") setSelectionCoords([]); }, [onToolUse, updateCssCursor, mouseCoords, blocks, selectionCoords, tool, setSelectionCoords]); - const onMouseUp = useCallback(() => { + const onPointerUp = useCallback(() => { dragging.current = false; updateCssCursor(); @@ -253,10 +253,12 @@ function Canvas() { setSelectionLayerBlocks([]); break; case "Enter": { + if (selectionLayerBlocks.length == 0) return; + const combinedBlocks = [...blocks, ...selectionLayerBlocks]; const uniqueBlocks = Array.from(new Map(combinedBlocks.map((block) => [`${block.x},${block.y}`, block])).values()); - setBlocks(uniqueBlocks); + setBlocks(uniqueBlocks.filter((b) => b.name !== "air")); setSelectionLayerBlocks([]); addHistory( @@ -480,9 +482,9 @@ function Canvas() { onClick={onClick} onKeyDown={onKeyDown} onKeyUp={onKeyUp} - onPointerDown={onMouseDown} + onPointerDown={onPointerDown} onPointerMove={onPointerMove} - onPointerUp={onMouseUp} + onPointerUp={onPointerUp} onWheel={onWheel} options={{ backgroundAlpha: 0 }} style={{ cursor: cssCursor }} diff --git a/src/components/canvas/SelectionBar.tsx b/src/components/canvas/SelectionBar.tsx index e9cbe86..559e9f5 100644 --- a/src/components/canvas/SelectionBar.tsx +++ b/src/components/canvas/SelectionBar.tsx @@ -26,7 +26,7 @@ function SelectionBar({ startBlocks, startSelectionCoords }: Props) { const combinedBlocks = [...blocks, ...selectionLayerBlocks]; const uniqueBlocks = Array.from(new Map(combinedBlocks.map((block) => [`${block.x},${block.y}`, block])).values()); - setBlocks(uniqueBlocks); + setBlocks(uniqueBlocks.filter((b) => b.name !== "air")); setSelectionLayerBlocks([]); addHistory(