@@ -171,14 +171,27 @@ impl MessageHandler<PortfolioMessage, (&InputPreprocessorMessageHandler, &Prefer
171
171
} ;
172
172
173
173
let copy_val = |buffer : & mut Vec < CopyBufferEntry > | {
174
- for layer_path in active_document
174
+ let binding = active_document
175
175
. metadata ( )
176
- . shallowest_unique_layers ( active_document. selected_nodes . selected_layers ( active_document. metadata ( ) ) )
177
- {
178
- let Some ( layer) = layer_path. last ( ) . copied ( ) else {
179
- continue ;
180
- } ;
176
+ . shallowest_unique_layers ( active_document. selected_nodes . selected_layers ( active_document. metadata ( ) ) ) ;
177
+
178
+ let mut get_last_elements: Vec < _ > = binding. iter ( ) . map ( |x| x. last ( ) . expect ( "empty path" ) ) . collect ( ) ;
179
+
180
+ let selected_to_vector = active_document
181
+ . selected_nodes
182
+ . selected_layers ( active_document. metadata ( ) )
183
+ . filter ( |_x| true )
184
+ . map ( |x| x. clone ( ) )
185
+ . collect :: < Vec < _ > > ( ) ;
186
+
187
+ // sort last elements by their appearance in selected vector
188
+ get_last_elements. sort_by ( |a, b| {
189
+ let index_a = selected_to_vector. iter ( ) . position ( |x| x == * a) . unwrap_or ( 9999 ) ;
190
+ let index_b = selected_to_vector. iter ( ) . position ( |x| x == * b) . unwrap_or ( 9999 ) ;
191
+ index_a. cmp ( & index_b)
192
+ } ) ;
181
193
194
+ for layer in get_last_elements {
182
195
let node = layer. to_node ( ) ;
183
196
let previous_alias = active_document. network ( ) . nodes . get ( & node) . map ( |node| node. alias . clone ( ) ) . unwrap_or_default ( ) ;
184
197
@@ -197,7 +210,7 @@ impl MessageHandler<PortfolioMessage, (&InputPreprocessorMessageHandler, &Prefer
197
210
. collect ( ) ,
198
211
)
199
212
. collect ( ) ,
200
- selected : active_document. selected_nodes . selected_layers_contains ( layer, active_document. metadata ( ) ) ,
213
+ selected : active_document. selected_nodes . selected_layers_contains ( * layer, active_document. metadata ( ) ) ,
201
214
collapsed : false ,
202
215
alias : previous_alias,
203
216
} ) ;
0 commit comments