From e62aa6a8f00d481705370b4df5e9c50ce1786a9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bel=C3=A9n=20Albeza?= Date: Tue, 10 Feb 2026 15:32:32 +0100 Subject: [PATCH] :bug: Fix resize board to fit (wasm) --- frontend/src/app/main/data/workspace/modifiers.cljs | 8 ++++---- frontend/src/app/main/data/workspace/transforms.cljs | 3 +-- frontend/src/app/render_wasm/api.cljs | 6 +++--- render-wasm/src/main.rs | 8 ++++++-- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/frontend/src/app/main/data/workspace/modifiers.cljs b/frontend/src/app/main/data/workspace/modifiers.cljs index 717b2b03dd..c162fde88f 100644 --- a/frontend/src/app/main/data/workspace/modifiers.cljs +++ b/frontend/src/app/main/data/workspace/modifiers.cljs @@ -631,7 +631,7 @@ (let [structure-entries (parse-structure-modifiers modif-tree)] (wasm.api/set-structure-modifiers structure-entries) (let [geometry-entries (parse-geometry-modifiers modif-tree) - modifiers (wasm.api/propagate-modifiers geometry-entries pixel-precision)] + modifiers (wasm.api/propagate-modifiers geometry-entries pixel-precision true)] (wasm.api/set-modifiers modifiers) (let [ids (into [] xf:map-key geometry-entries) selrect (wasm.api/get-selection-rect ids)] @@ -663,8 +663,8 @@ #_:clj-kondo/ignore (defn apply-wasm-modifiers - [modif-tree & {:keys [ignore-constraints ignore-snap-pixel snap-ignore-axis undo-transation?] - :or {ignore-constraints false ignore-snap-pixel false snap-ignore-axis nil undo-transation? true} + [modif-tree & {:keys [ignore-constraints ignore-snap-pixel snap-ignore-axis undo-transation? propagate?] + :or {ignore-constraints false ignore-snap-pixel false snap-ignore-axis nil undo-transation? true propagate? true} :as params}] (ptk/reify ::apply-wasm-modifiesr ptk/WatchEvent @@ -682,7 +682,7 @@ (and (not ignore-snap-pixel) (contains? (:workspace-layout state) :snap-pixel-grid)) transforms - (into {} (wasm.api/propagate-modifiers geometry-entries snap-pixel?)) + (into {} (wasm.api/propagate-modifiers geometry-entries snap-pixel? propagate?)) ignore-tree (calculate-ignore-tree-wasm transforms objects) diff --git a/frontend/src/app/main/data/workspace/transforms.cljs b/frontend/src/app/main/data/workspace/transforms.cljs index 0d88b7c37b..98fb1666be 100644 --- a/frontend/src/app/main/data/workspace/transforms.cljs +++ b/frontend/src/app/main/data/workspace/transforms.cljs @@ -1247,9 +1247,8 @@ (some? new-modif) (assoc (:id frame) {:modifiers new-modif}))))) {}))] - (if (features/active-feature? state "render-wasm/v1") - (rx/of (dwm/apply-wasm-modifiers modifiers {:undo-group undo-group})) + (rx/of (dwm/apply-wasm-modifiers modifiers {:undo-group undo-group :propagate? false})) (rx/of (dwm/apply-modifiers {:modifiers modifiers :undo-group undo-group}))))))) (defn resize-text-editor diff --git a/frontend/src/app/render_wasm/api.cljs b/frontend/src/app/render_wasm/api.cljs index 6e2373b519..3abcbe937c 100644 --- a/frontend/src/app/render_wasm/api.cljs +++ b/frontend/src/app/render_wasm/api.cljs @@ -1072,7 +1072,7 @@ (defn- set-objects-async "Asynchronously process shapes in chunks, yielding to the browser between chunks. Returns a promise that resolves when all shapes are processed. - + Renders a preview only periodically during loading to show progress, then does a full tile-based render at the end." [shapes render-callback] @@ -1230,7 +1230,7 @@ (h/call wasm/internal-module "_set_structure_modifiers")))) (defn propagate-modifiers - [entries pixel-precision] + [entries pixel-precision propagate?] (when-not ^boolean (empty? entries) (let [heapf32 (mem/get-heap-f32) heapu32 (mem/get-heap-u32) @@ -1244,7 +1244,7 @@ offset entries) - (let [offset (-> (h/call wasm/internal-module "_propagate_modifiers" pixel-precision) + (let [offset (-> (h/call wasm/internal-module "_propagate_modifiers" pixel-precision propagate?) (mem/->offset-32)) length (aget heapu32 offset) max-offset (+ offset 1 (* length MODIFIER-U32-SIZE)) diff --git a/render-wasm/src/main.rs b/render-wasm/src/main.rs index e8aa0640f7..30e57aaa7f 100644 --- a/render-wasm/src/main.rs +++ b/render-wasm/src/main.rs @@ -702,14 +702,18 @@ pub extern "C" fn clean_modifiers() { } #[no_mangle] -pub extern "C" fn propagate_modifiers(pixel_precision: bool) -> *mut u8 { +pub extern "C" fn propagate_modifiers(pixel_precision: bool, propagate: bool) -> *mut u8 { let bytes = mem::bytes(); - let entries: Vec<_> = bytes + let mut entries: Vec<_> = bytes .chunks(size_of::<::BytesType>()) .map(|data| TransformEntry::try_from(data).unwrap()) .collect(); + for entry in entries.iter_mut() { + entry.propagate = propagate; + } + with_state!(state, { let result = shapes::propagate_modifiers(state, &entries, pixel_precision); mem::write_vec(result)