Skip to content

Commit 68ad92f

Browse files
committed
Move a layer as a whole and use change
1 parent bf85018 commit 68ad92f

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

editor/src/messages/portfolio/portfolio_message_handler.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -890,15 +890,20 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
890890
if let Some(document) = self.active_document() {
891891
if let Ok(data) = serde_json::from_str::<Vec<CopyBufferEntry>>(&data) {
892892
let parent = document.new_layer_parent(false);
893-
let mut transform = document.metadata().document_to_viewport;
893+
let transform = document.metadata().document_to_viewport;
894894

895895
// Check parent bounds first since children will be pasted at same position
896896
if let Some(parent_bounds) = document.metadata().bounding_box_document(parent) {
897897
let viewport_bounds = Quad::from_box_at_zero(ipp.viewport_bounds.size());
898898
let quad = transform * Quad::from_box(parent_bounds);
899899

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()));
902907

903908
let mut added_nodes = false;
904909

@@ -915,8 +920,9 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
915920
responses.add(NodeGraphMessage::AddNodes { nodes: entry.nodes, new_ids });
916921
responses.add(NodeGraphMessage::MoveLayerToStack { layer, parent, insert_index: 0 });
917922

923+
// Apply the same translation to all layers
918924
if let Some(transform) = centering_transform {
919-
responses.add(GraphOperationMessage::TransformSet {
925+
responses.add(GraphOperationMessage::TransformChange {
920926
layer,
921927
transform,
922928
transform_in: TransformIn::Viewport,

0 commit comments

Comments
 (0)