From 63959a22cc37ba164df56608cb2b1aa128a0b292 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 26 Nov 2025 12:51:37 +0100 Subject: [PATCH] :bug: Fix svg attrs --- frontend/src/app/render_wasm/api.cljs | 6 +++--- render-wasm/src/render.rs | 12 +++++------ render-wasm/src/shapes.rs | 31 ++++++++++++++++----------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/frontend/src/app/render_wasm/api.cljs b/frontend/src/app/render_wasm/api.cljs index ba5525791e..8e6f8f0e14 100644 --- a/frontend/src/app/render_wasm/api.cljs +++ b/frontend/src/app/render_wasm/api.cljs @@ -475,9 +475,9 @@ (dissoc :style) (merge style) (select-keys allowed-keys)) - fill-rule (or (-> attrs :fill-rule sr/translate-fill-rule) (-> attrs :fillRule sr/translate-fill-rule)) - stroke-linecap (or (-> attrs :stroke-linecap sr/translate-stroke-linecap) (-> attrs :strokeLinecap sr/translate-stroke-linecap)) - stroke-linejoin (or (-> attrs :stroke-linejoin sr/translate-stroke-linejoin) (-> attrs :strokeLinejoin sr/translate-stroke-linejoin)) + fill-rule (-> (or (:fill-rule attrs) (:fillRule attrs)) sr/translate-fill-rule) + stroke-linecap (-> (or (:stroke-linecap attrs) (:strokeLinecap attrs)) sr/translate-stroke-linecap) + stroke-linejoin (-> (or (:stroke-linejoin attrs) (:strokeLinejoin attrs)) sr/translate-stroke-linejoin) fill-none (= "none" (-> attrs :fill))] (h/call wasm/internal-module "_set_shape_svg_attrs" fill-rule stroke-linecap stroke-linejoin fill-none))) diff --git a/render-wasm/src/render.rs b/render-wasm/src/render.rs index e331e4781f..b1d3607fe7 100644 --- a/render-wasm/src/render.rs +++ b/render-wasm/src/render.rs @@ -645,14 +645,12 @@ impl RenderState { if frame_has_blur && shape_has_blur { shape.to_mut().set_blur(None); } - } else { - if !frame_has_blur { - if let Some(blur) = self.combined_layer_blur(shape.blur) { - shape.to_mut().set_blur(Some(blur)); - } - } else if shape_has_blur { - shape.to_mut().set_blur(None); + } else if !frame_has_blur { + if let Some(blur) = self.combined_layer_blur(shape.blur) { + shape.to_mut().set_blur(Some(blur)); } + } else if shape_has_blur { + shape.to_mut().set_blur(None); } let center = shape.center(); diff --git a/render-wasm/src/shapes.rs b/render-wasm/src/shapes.rs index 5fb84f6610..cb334a6f00 100644 --- a/render-wasm/src/shapes.rs +++ b/render-wasm/src/shapes.rs @@ -908,7 +908,7 @@ impl Shape { match (mask_rect, content_rect) { (Some(mut mask), Some(content)) => { - if mask.intersect(&content) { + if mask.intersect(content) { rect.join(mask); } } @@ -1527,20 +1527,27 @@ mod tests { let mask_id = Uuid::new_v4(); let content_id = Uuid::new_v4(); - let group = pool.add_shape(group_id); - group.set_shape_type(Type::Group(Group { masked: true })); - group.children = vec![mask_id, content_id]; + { + let group = pool.add_shape(group_id); + group.set_shape_type(Type::Group(Group { masked: true })); + group.children = vec![mask_id, content_id]; + } - let mask = pool.add_shape(mask_id); - mask.set_shape_type(Type::Rect(Rect::default())); - mask.set_selrect(0.0, 0.0, 50.0, 50.0); - mask.set_parent(group_id); + { + let mask = pool.add_shape(mask_id); + mask.set_shape_type(Type::Rect(Rect::default())); + mask.set_selrect(0.0, 0.0, 50.0, 50.0); + mask.set_parent(group_id); + } - let content = pool.add_shape(content_id); - content.set_shape_type(Type::Rect(Rect::default())); - content.set_selrect(-10.0, -10.0, 110.0, 110.0); - content.set_parent(group_id); + { + let content = pool.add_shape(content_id); + content.set_shape_type(Type::Rect(Rect::default())); + content.set_selrect(-10.0, -10.0, 110.0, 110.0); + content.set_parent(group_id); + } + let group = pool.get(&group_id).expect("group should exist"); let extrect = group.calculate_extrect(&pool, 1.0); assert_eq!(extrect.left, 0.0);