mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-01 02:18:12 +08:00
Restore select tool functionality and shallow select mode (#1583)
* Restore select tool functionality * UI tweak * Change all of the things --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
co-authored by
Keavon Chambers
parent
5c9d3c5d75
commit
208e907fa4
@@ -398,12 +398,29 @@ impl MessageHandler<DocumentMessage, DocumentInputs<'_>> for DocumentMessageHand
|
||||
responses.add(FrontendMessage::UpdateDocumentLayerStructure { data_buffer });
|
||||
}
|
||||
DuplicateSelectedLayers => {
|
||||
// TODO: Reimplement selected layer duplication
|
||||
// self.backup(responses);
|
||||
// self.layer_range_selection_reference = None;
|
||||
// for path in self.selected_layers_sorted() {
|
||||
// responses.add(DocumentOperation::DuplicateLayer { path: path.to_vec() });
|
||||
// }
|
||||
self.backup(responses);
|
||||
for layer_ancestors in self.metadata.shallowest_unique_layers(self.selected_nodes.selected_layers(&self.metadata)) {
|
||||
let Some(layer) = layer_ancestors.last().copied() else { continue };
|
||||
let Some(parent) = layer.parent(&self.metadata) else { continue };
|
||||
let Some(node) = self.network().nodes.get(&layer.to_node()).and_then(|node| node.inputs.first()).and_then(|input| input.as_node()) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let nodes = NodeGraphMessageHandler::copy_nodes(
|
||||
self.network(),
|
||||
&self
|
||||
.network()
|
||||
.upstream_flow_back_from_nodes(vec![node], false)
|
||||
.enumerate()
|
||||
.map(|(index, (_, node_id))| (node_id, NodeId(index as u64)))
|
||||
.collect(),
|
||||
)
|
||||
.collect();
|
||||
|
||||
let id = NodeId(generate_uuid());
|
||||
let insert_index = -1;
|
||||
responses.add(GraphOperationMessage::NewCustomLayer { id, nodes, parent, insert_index });
|
||||
}
|
||||
}
|
||||
FlipSelectedLayers { flip_axis } => {
|
||||
self.backup(responses);
|
||||
|
||||
Reference in New Issue
Block a user