From 69c6f44373802a6a6df6b7803312775c29207d77 Mon Sep 17 00:00:00 2001 From: Mohamed Osama <67656249+moOsama76@users.noreply.github.com> Date: Sat, 9 Mar 2024 07:18:37 +0200 Subject: [PATCH] Fix internal consistency of layer ordering when grouping (#1645) * Internal consistency: Grouping layers preserve the order that they were sorted once those layers end up in the new group * optimizations --- .../messages/portfolio/portfolio_message_handler.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/editor/src/messages/portfolio/portfolio_message_handler.rs b/editor/src/messages/portfolio/portfolio_message_handler.rs index 2e5c8b26..8c4d14e8 100644 --- a/editor/src/messages/portfolio/portfolio_message_handler.rs +++ b/editor/src/messages/portfolio/portfolio_message_handler.rs @@ -166,14 +166,15 @@ impl MessageHandler| { - for layer_path in active_document + let binding = active_document .metadata() - .shallowest_unique_layers(active_document.selected_nodes.selected_layers(active_document.metadata())) - { - let Some(layer) = layer_path.last().copied() else { - continue; - }; + .shallowest_unique_layers(active_document.selected_nodes.selected_layers(active_document.metadata())); + let get_last_elements: Vec<_> = binding.iter().map(|x| x.last().expect("empty path")).collect(); + + let ordered_last_elements: Vec<_> = active_document.metadata.all_layers().filter(|layer| get_last_elements.contains(&layer)).collect(); + + for layer in ordered_last_elements { let node = layer.to_node(); let previous_alias = active_document.network().nodes.get(&node).map(|node| node.alias.clone()).unwrap_or_default();