From 37db9b1392e1fed61f00052f61d07709e1987a85 Mon Sep 17 00:00:00 2001 From: mTvare Date: Fri, 24 Jan 2025 02:52:41 +0530 Subject: [PATCH] Retain transforms of layers when transferred between transformed groups (#2212) * Retain position of layers when transfered between artboards. Fixes #861 * Apply same fixes to grouped layers --- .../document/document_message_handler.rs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 2ef3f20a..0dc243eb 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -622,6 +622,16 @@ impl MessageHandler> for DocumentMessag parent, insert_index: calculated_insert_index, }); + + let layer_local_transform = self.network_interface.document_metadata().transform_to_viewport(layer_to_move); + let undo_transform = self.network_interface.document_metadata().transform_to_viewport(parent).inverse(); + let transform = undo_transform * layer_local_transform; + responses.add(GraphOperationMessage::TransformSet { + layer: layer_to_move, + transform, + transform_in: TransformIn::Local, + skip_rerender: false, + }); } responses.add(NodeGraphMessage::RunDocumentGraph); @@ -1194,6 +1204,16 @@ impl MessageHandler> for DocumentMessag parent, insert_index: folder_index, }); + + let layer_local_transform = self.network_interface.document_metadata().transform_to_viewport(child); + let undo_transform = self.network_interface.document_metadata().transform_to_viewport(parent).inverse(); + let transform = undo_transform * layer_local_transform; + responses.add(GraphOperationMessage::TransformSet { + layer: child, + transform, + transform_in: TransformIn::Local, + skip_rerender: false, + }); } // Delete empty group folder