From 07ee1c78fe3e09671faa5d906cf4fd7bd095223b Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Sat, 27 Jun 2026 23:10:23 -0700 Subject: [PATCH] Fix the Separate Subpaths node dropping a layer's transform when it has no subpaths --- node-graph/nodes/vector/src/vector_nodes.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/node-graph/nodes/vector/src/vector_nodes.rs b/node-graph/nodes/vector/src/vector_nodes.rs index eeb1c8e0b6..47d5455e1b 100644 --- a/node-graph/nodes/vector/src/vector_nodes.rs +++ b/node-graph/nodes/vector/src/vector_nodes.rs @@ -1269,12 +1269,20 @@ async fn separate_subpaths(_: impl Ctx, content: List) -> List { content .into_iter() .flat_map(|row| { + let bezpaths = row.element().stroke_bezpath_iter().collect::>(); + + // Pass the original element through unchanged when it has no subpaths, so its attributes + // (such as the layer transform) survive downstream rather than being dropped along with the empty list. + if bezpaths.is_empty() { + return vec![row]; + } + let style = row.element().style.clone(); - let (element, attributes) = row.into_parts(); + let (_, attributes) = row.into_parts(); - element - .stroke_bezpath_iter() - .map(move |bezpath| { + bezpaths + .into_iter() + .map(|bezpath| { let mut vector = Vector::default(); vector.append_bezpath(bezpath); vector.style = style.clone();