@@ -890,15 +890,20 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
890
890
if let Some ( document) = self . active_document ( ) {
891
891
if let Ok ( data) = serde_json:: from_str :: < Vec < CopyBufferEntry > > ( & data) {
892
892
let parent = document. new_layer_parent ( false ) ;
893
- let mut transform = document. metadata ( ) . document_to_viewport ;
893
+ let transform = document. metadata ( ) . document_to_viewport ;
894
894
895
895
// Check parent bounds first since children will be pasted at same position
896
896
if let Some ( parent_bounds) = document. metadata ( ) . bounding_box_document ( parent) {
897
897
let viewport_bounds = Quad :: from_box_at_zero ( ipp. viewport_bounds . size ( ) ) ;
898
898
let quad = transform * Quad :: from_box ( parent_bounds) ;
899
899
900
- transform. translation = ( viewport_bounds. center ( ) - quad. center ( ) ) . round ( ) + quad. center ( ) ;
901
- let centering_transform = quad. 0 . into_iter ( ) . all ( |point| !viewport_bounds. contains ( point) ) . then_some ( transform) ;
900
+ // Calculate the translation needed to center the parent
901
+ let translation = viewport_bounds. center ( ) - quad. center ( ) ;
902
+ let centering_transform = quad
903
+ . 0
904
+ . into_iter ( )
905
+ . all ( |point| !viewport_bounds. contains ( point) )
906
+ . then_some ( glam:: DAffine2 :: from_translation ( translation. round ( ) ) ) ;
902
907
903
908
let mut added_nodes = false ;
904
909
@@ -915,8 +920,9 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
915
920
responses. add ( NodeGraphMessage :: AddNodes { nodes : entry. nodes , new_ids } ) ;
916
921
responses. add ( NodeGraphMessage :: MoveLayerToStack { layer, parent, insert_index : 0 } ) ;
917
922
923
+ // Apply the same translation to all layers
918
924
if let Some ( transform) = centering_transform {
919
- responses. add ( GraphOperationMessage :: TransformSet {
925
+ responses. add ( GraphOperationMessage :: TransformChange {
920
926
layer,
921
927
transform,
922
928
transform_in : TransformIn :: Viewport ,
0 commit comments