@@ -166,14 +166,27 @@ impl MessageHandler<PortfolioMessage, (&InputPreprocessorMessageHandler, &Prefer
166166 } ;
167167
168168 let copy_val = |buffer : & mut Vec < CopyBufferEntry > | {
169- for layer_path in active_document
169+ let binding = active_document
170170 . metadata ( )
171- . shallowest_unique_layers ( active_document. selected_nodes . selected_layers ( active_document. metadata ( ) ) )
172- {
173- let Some ( layer) = layer_path. last ( ) . copied ( ) else {
174- continue ;
175- } ;
171+ . shallowest_unique_layers ( active_document. selected_nodes . selected_layers ( active_document. metadata ( ) ) ) ;
172+
173+ let mut get_last_elements: Vec < _ > = binding. iter ( ) . map ( |x| x. last ( ) . expect ( "empty path" ) ) . collect ( ) ;
174+
175+ let selected_to_vector = active_document
176+ . selected_nodes
177+ . selected_layers ( active_document. metadata ( ) )
178+ . filter ( |_x| true )
179+ . map ( |x| x. clone ( ) )
180+ . collect :: < Vec < _ > > ( ) ;
181+
182+ // sort last elements by their appearance in selected vector
183+ get_last_elements. sort_by ( |a, b| {
184+ let index_a = selected_to_vector. iter ( ) . position ( |x| x == * a) . unwrap_or ( 9999 ) ;
185+ let index_b = selected_to_vector. iter ( ) . position ( |x| x == * b) . unwrap_or ( 9999 ) ;
186+ index_a. cmp ( & index_b)
187+ } ) ;
176188
189+ for layer in get_last_elements {
177190 let node = layer. to_node ( ) ;
178191 let previous_alias = active_document. network ( ) . nodes . get ( & node) . map ( |node| node. alias . clone ( ) ) . unwrap_or_default ( ) ;
179192
@@ -192,7 +205,7 @@ impl MessageHandler<PortfolioMessage, (&InputPreprocessorMessageHandler, &Prefer
192205 . collect ( ) ,
193206 )
194207 . collect ( ) ,
195- selected : active_document. selected_nodes . selected_layers_contains ( layer, active_document. metadata ( ) ) ,
208+ selected : active_document. selected_nodes . selected_layers_contains ( * layer, active_document. metadata ( ) ) ,
196209 collapsed : false ,
197210 alias : previous_alias,
198211 } ) ;
0 commit comments