From 5c2dde73086b6c12ab0aaa391cf7f60a2604a0fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bel=C3=A9n=20Albeza?= Date: Tue, 11 Nov 2025 15:52:18 +0100 Subject: [PATCH] :bug: Fix font family not being updated when changed from dropdown --- frontend/src/app/render_wasm/api.cljs | 6 +++--- frontend/src/app/render_wasm/api/fonts.cljs | 3 ++- frontend/src/app/render_wasm/shape.cljs | 8 ++++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/render_wasm/api.cljs b/frontend/src/app/render_wasm/api.cljs index 4228d04251..464cac7695 100644 --- a/frontend/src/app/render_wasm/api.cljs +++ b/frontend/src/app/render_wasm/api.cljs @@ -904,7 +904,7 @@ (map :id) (run! f/update-text-layout))) -(defn process-pending +(defn process-pending! [shapes thumbnails full] (let [event (js/CustomEvent. "wasm:set-objects-finished") pending-thumbnails (-> (d/index-by :key :callback thumbnails) vals) @@ -925,7 +925,7 @@ (defn process-object [shape] (let [{:keys [thumbnails full]} (set-object [] shape)] - (process-pending [shape] thumbnails full))) + (process-pending! [shape] thumbnails full))) (defn set-objects [objects] @@ -943,7 +943,7 @@ (into full-acc full))) {:thumbnails thumbnails-acc :full full-acc}))] (perf/end-measure "set-objects") - (process-pending shapes thumbnails full))) + (process-pending! shapes thumbnails full))) (defn clear-focus-mode [] diff --git a/frontend/src/app/render_wasm/api/fonts.cljs b/frontend/src/app/render_wasm/api/fonts.cljs index 1c9ac9c5d3..efbbca5cc8 100644 --- a/frontend/src/app/render_wasm/api/fonts.cljs +++ b/frontend/src/app/render_wasm/api/fonts.cljs @@ -86,7 +86,7 @@ (aget shape-id-buffer 2) (aget shape-id-buffer 3)))) -;; IMPORTANT: It should be noted that only TTF fonts can be stored. +;; IMPORTANT: Only TTF fonts can be stored. (defn- store-font-buffer [shape-id font-data font-array-buffer emoji? fallback?] (let [font-id-buffer (:family-id-buffer font-data) @@ -232,6 +232,7 @@ (store-font-id shape-id font-data asset-id emoji? fallback?))) + (defn store-fonts [shape-id fonts] (keep (fn [font] (store-font shape-id font)) fonts)) diff --git a/frontend/src/app/render_wasm/shape.cljs b/frontend/src/app/render_wasm/shape.cljs index c2e27e408d..0887a0e2ac 100644 --- a/frontend/src/app/render_wasm/shape.cljs +++ b/frontend/src/app/render_wasm/shape.cljs @@ -187,8 +187,12 @@ (api/set-shape-svg-raw-content (api/get-static-markup shape)) (= (:type shape) :text) - (do (api/set-shape-text-content id v) - (api/set-shape-text-images id v))) + (let [pending-thumbnails (into [] (concat (api/set-shape-text-content id v))) + pending-full (into [] (concat (api/set-shape-text-images id v)))] + ;; FIXME: this is a hack to process the pending tasks asynchronously + ;; we should probably modify set-wasm-attr! to return a list of callbacks to be executed in a second pass. + (api/process-pending! [shape] pending-thumbnails pending-full) + nil)) :grow-type (api/set-shape-grow-type v)