From 4185a7a6f357b8a73189497c5b9073f98469b138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bel=C3=A9n=20Albeza?= Date: Tue, 17 Feb 2026 12:58:15 +0100 Subject: [PATCH] :bug: Fix grid layout lines persisted after board is deleted --- render-wasm/src/main.rs | 3 +++ render-wasm/src/render/ui.rs | 4 ++++ render-wasm/src/shapes.rs | 10 ++++++++++ render-wasm/src/state.rs | 4 ++++ 4 files changed, 21 insertions(+) diff --git a/render-wasm/src/main.rs b/render-wasm/src/main.rs index 005bf31781..c435e03ded 100644 --- a/render-wasm/src/main.rs +++ b/render-wasm/src/main.rs @@ -412,6 +412,9 @@ fn set_children_set(entries: Vec) { for id in entries { state.touch_shape(id); + if let Some(children_shape) = state.shapes.get_mut(&id) { + children_shape.set_deleted(false); + } } }); diff --git a/render-wasm/src/render/ui.rs b/render-wasm/src/render/ui.rs index 97c8dd4867..7d6436fbc8 100644 --- a/render-wasm/src/render/ui.rs +++ b/render-wasm/src/render/ui.rs @@ -45,6 +45,10 @@ pub fn render(render_state: &mut RenderState, shapes: ShapesPoolRef) { continue; } + if shape.deleted() { + continue; + } + if let Some(shape) = shapes.get(&shape.id) { grid_layout::render_overlay(zoom, canvas, shape, shapes); } diff --git a/render-wasm/src/shapes.rs b/render-wasm/src/shapes.rs index 2eed111226..8967b6ee49 100644 --- a/render-wasm/src/shapes.rs +++ b/render-wasm/src/shapes.rs @@ -196,6 +196,7 @@ pub struct Shape { pub extrect_cache: RefCell>, pub svg_transform: Option, pub ignore_constraints: bool, + deleted: bool, } // Returns all ancestor shapes of this shape, traversing up the parent hierarchy @@ -284,6 +285,7 @@ impl Shape { extrect_cache: RefCell::new(None), svg_transform: None, ignore_constraints: false, + deleted: false, } } @@ -441,6 +443,14 @@ impl Shape { self.svg_transform } + pub fn set_deleted(&mut self, value: bool) { + self.deleted = value; + } + + pub fn deleted(&self) -> bool { + self.deleted + } + // FIXME: These arguments could be grouped or simplified #[allow(clippy::too_many_arguments)] pub fn set_flex_layout_child_data( diff --git a/render-wasm/src/state.rs b/render-wasm/src/state.rs index 7762d4b5aa..b99b768334 100644 --- a/render-wasm/src/state.rs +++ b/render-wasm/src/state.rs @@ -157,6 +157,10 @@ impl State { self.render_state.tiles.remove_shape_at(tile, shape.id); } } + + if let Some(shape_to_delete) = self.shapes.get_mut(&id) { + shape_to_delete.set_deleted(true); + } } }