From e520b8037c80875df64babf28d6c39d6ac8a7466 Mon Sep 17 00:00:00 2001 From: vegard Date: Thu, 19 Mar 2026 07:21:51 +0000 Subject: [PATCH] =?UTF-8?q?Canvas:=20sist=20ber=C3=B8rt=20boks=20forblir?= =?UTF-8?q?=20=C3=B8verst=20(persistent=20z-order)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hver gang en boks klikkes/dras økes en global z-teller og boksen får høyeste verdi. Rekkefølgen bevares etter at boksen deselekteres. Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/lib/components/canvas/Canvas.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/canvas/Canvas.svelte b/frontend/src/lib/components/canvas/Canvas.svelte index 867bbe7..808a2c2 100644 --- a/frontend/src/lib/components/canvas/Canvas.svelte +++ b/frontend/src/lib/components/canvas/Canvas.svelte @@ -63,6 +63,8 @@ let isLassoing = $state(false); let spaceHeld = $state(false); let dragTargetId: string | null = null; + let topZCounter = $state(1); + let zOrderMap = $state(new Map()); let dragStartWorld = { x: 0, y: 0 }; let dragObjectStart = { x: 0, y: 0 }; let dragGroupStarts = new Map(); @@ -212,6 +214,13 @@ } onSelectionChange?.([...selectedIds]); + // Bring to front + topZCounter++; + zOrderMap = new Map(zOrderMap); + for (const sid of selectedIds) { + zOrderMap.set(sid, topZCounter); + } + // Record start positions for all selected objects (group drag) dragGroupStarts = new Map(); for (const sid of selectedIds) { @@ -506,7 +515,7 @@ style:top="{obj.y}px" style:width="{obj.width}px" style:height="{obj.height}px" - style:z-index={selectedIds.has(obj.id) ? 10 : 1} + style:z-index={zOrderMap.get(obj.id) ?? 1} > {@render renderObject(obj)}