From 8514ffdc1a50d14cb2da7d2d23f9e0ec0b0c5404 Mon Sep 17 00:00:00 2001 From: SinachPat Date: Thu, 30 Apr 2026 21:33:32 +0100 Subject: [PATCH] fix: restore artboard creation and drag on canvas Canvas.tsx: removed the `e.target === e.currentTarget` guard on the artboard-creation click handler. The canvas has a full-size position:absolute transform layer that intercepts all events, making `e.target` never equal to `e.currentTarget`. Artboard creation was silently broken for every click. Artboard.tsx: added `onMouseDown` stopPropagation to the artboard root div so clicks on an existing artboard don't bubble up and trigger the creation path now that the guard is gone. Co-Authored-By: Claude Sonnet 4.6 --- packages/app/src/components/canvas/Artboard.tsx | 1 + packages/app/src/components/canvas/Canvas.tsx | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/app/src/components/canvas/Artboard.tsx b/packages/app/src/components/canvas/Artboard.tsx index 659ab3d..2e5f3d7 100644 --- a/packages/app/src/components/canvas/Artboard.tsx +++ b/packages/app/src/components/canvas/Artboard.tsx @@ -165,6 +165,7 @@ export function Artboard({ id, label, x, y, width, height, renderUrl }: Artboard return (
e.stopPropagation()} onClick={(e) => { e.stopPropagation(); selectArtboard(id); }} > {/* Label / drag handle */} diff --git a/packages/app/src/components/canvas/Canvas.tsx b/packages/app/src/components/canvas/Canvas.tsx index 81ae6b5..0b6da16 100644 --- a/packages/app/src/components/canvas/Canvas.tsx +++ b/packages/app/src/components/canvas/Canvas.tsx @@ -76,8 +76,10 @@ export function Canvas() { return; } - // Artboard creation tool: click on canvas to place a new artboard - if (activeTool === 'artboard' && e.target === e.currentTarget && workspaceId) { + // Artboard creation tool: click on canvas to place a new artboard. + // Note: existing artboards stop propagation on mousedown so this path + // only fires on empty canvas space. + if (activeTool === 'artboard' && workspaceId) { const label = `Artboard ${Date.now().toString(36).slice(-4).toUpperCase()}`; createArtboardMutation({ workspace_id: workspaceId,