From 36c23faae0def69403df7d7926683f90c08ebb50 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Mon, 30 Mar 2026 07:51:48 +0200 Subject: [PATCH] :bug: Fix sync WASM viewport outlines with live modifiers --- .../app/main/ui/workspace/viewport_wasm.cljs | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/viewport_wasm.cljs b/frontend/src/app/main/ui/workspace/viewport_wasm.cljs index 73510163ad..a7cd731d5a 100644 --- a/frontend/src/app/main/ui/workspace/viewport_wasm.cljs +++ b/frontend/src/app/main/ui/workspace/viewport_wasm.cljs @@ -64,14 +64,19 @@ ;; --- Viewport +(defn- apply-modifiers-to-objects + [objects modifiers] + (->> modifiers + (reduce + (fn [objs [id t]] + (if (contains? objs id) + (update objs id gsh/apply-transform t) + objs)) + objects))) + (defn apply-modifiers-to-selected [selected objects modifiers] - (->> modifiers - (filter #(contains? selected (first %))) - (reduce - (fn [objects [id transform]] - (update objects id gsh/apply-transform transform)) - objects))) + (apply-modifiers-to-objects objects (select-keys (into {} modifiers) selected))) (mf/defc viewport* [{:keys [selected wglobal layout file page palete-size file-version-id]}] @@ -121,6 +126,11 @@ selected-shapes (->> selected (into [] (keep (d/getf objects-modified))) (not-empty)) + + objects-for-outlines + (mf/with-memo [base-objects wasm-modifiers] + (apply-modifiers-to-objects base-objects wasm-modifiers)) + ;; STATE alt? (mf/use-state false) shift? (mf/use-state false) @@ -491,20 +501,20 @@ outlined-frame (get objects outlined-frame-id)] [:* [:& outline/shape-outlines - {:objects base-objects + {:objects objects-for-outlines :hover #{outlined-frame-id} :zoom zoom}] (when (ctl/any-layout? outlined-frame) [:g.ghost-outline.blurrable [:& outline/shape-outlines - {:objects base-objects + {:objects objects-for-outlines :selected selected :zoom zoom}]])])) (when show-outlines? [:& outline/shape-outlines - {:objects base-objects + {:objects objects-for-outlines :selected selected :hover #{(:id @hover) @frame-hover} :highlighted highlighted