Ungroup layers (#465)

* WIP handling corner cases, like ungrouping subfolders

* Resolved hanging

* Fix recursive ungrouping

* Functional, corner case free Ungroup. Small Undo issue & warnings

* Update layertree upon undo

* Also update  layerdata upon redo

* Add some polish

* Resolved TODOs

* Oops didn't save all after rename, ha.

Co-authored-by: Dennis <dennis@kobert.dev>
This commit is contained in:
Oliver Davies
2022-01-07 15:53:12 -08:00
committed by Keavon Chambers
parent 522626cd02
commit 31220fe276
7 changed files with 111 additions and 35 deletions

View File

@@ -394,29 +394,29 @@ impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHa
let destination_path = [path.to_vec(), vec![generate_uuid()]].concat();
responses.push_back(
DocumentOperation::InsertLayer {
layer: entry.layer.clone(),
destination_path: destination_path.clone(),
insert_index,
responses.push_front(
DocumentMessage::UpdateLayerMetadata {
layer_path: destination_path.clone(),
layer_metadata: entry.layer_metadata,
}
.into(),
);
responses.push_back(
DocumentMessage::UpdateLayerMetadata {
layer_path: destination_path,
layer_metadata: entry.layer_metadata,
responses.push_front(
DocumentOperation::InsertLayer {
layer: entry.layer.clone(),
destination_path,
insert_index,
}
.into(),
);
};
if insert_index == -1 {
for entry in self.copy_buffer[clipboard as usize].iter() {
for entry in self.copy_buffer[clipboard as usize].iter().rev() {
paste(entry, responses)
}
} else {
for entry in self.copy_buffer[clipboard as usize].iter().rev() {
for entry in self.copy_buffer[clipboard as usize].iter() {
paste(entry, responses)
}
}