Add keyboard shortcut to duplicate layers (#214)

* Add keyboard shortcut to duplicate layers

* Avoid heap allocation in DuplicateSelectedLayers
This commit is contained in:
Till Arnold
2021-06-16 11:15:02 +02:00
committed by Keavon Chambers
parent 310db82ab4
commit ff232bd722
5 changed files with 20 additions and 1 deletions

View File

@@ -248,6 +248,13 @@ impl Document {
let (path, _) = split_path(path.as_slice()).unwrap_or_else(|_| (&[], 0));
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::FolderChanged { path: path.to_vec() }])
}
Operation::DuplicateLayer { path } => {
let layer = self.layer(&path)?.clone();
let (folder_path, _) = split_path(path.as_slice()).unwrap_or_else(|_| (&[], 0));
let folder = self.folder_mut(folder_path)?;
folder.add_layer(layer, -1).ok_or(DocumentError::IndexOutOfBounds)?;
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::FolderChanged { path: folder_path.to_vec() }])
}
Operation::AddFolder { path } => {
self.set_layer(&path, Layer::new(LayerDataTypes::Folder(Folder::default())))?;

View File

@@ -60,6 +60,9 @@ pub enum Operation {
DeleteLayer {
path: Vec<LayerId>,
},
DuplicateLayer {
path: Vec<LayerId>,
},
AddFolder {
path: Vec<LayerId>,
},