From 478ace33498b662dfdeb2da3e2d52589f43f6c40 Mon Sep 17 00:00:00 2001 From: Mohamed Osama <67656249+moOsama76@users.noreply.github.com> Date: Wed, 30 Apr 2025 01:48:08 +0300 Subject: [PATCH] Fix a layer's transform being reset when it's reordered within its same parent (#2624) Fix layer transform reset when being reordered within the same group/parent --- .../document/document_message_handler.rs | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 5fc0138c..61bccb39 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -684,15 +684,17 @@ impl MessageHandler> for DocumentMessag 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, - }); + if layer_to_move.parent(self.metadata()) != Some(parent) { + 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);