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
This commit is contained in:
mTvare 2025-01-24 02:52:41 +05:30 committed by GitHub
parent 8505ed3f10
commit 37db9b1392
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 20 additions and 0 deletions

View File

@ -622,6 +622,16 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
parent, parent,
insert_index: calculated_insert_index, 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); responses.add(NodeGraphMessage::RunDocumentGraph);
@ -1194,6 +1204,16 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
parent, parent,
insert_index: folder_index, 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 // Delete empty group folder