mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-05 02:08:13 +08:00
@@ -250,16 +250,21 @@ impl<'a> ModifyInputsContext<'a> {
|
|||||||
let mut existing_node_id = None;
|
let mut existing_node_id = None;
|
||||||
for upstream_node in upstream.collect::<Vec<_>>() {
|
for upstream_node in upstream.collect::<Vec<_>>() {
|
||||||
let upstream_node_input_type = self.network_interface.input_type(&InputConnector::node(upstream_node, 0), &[]).0.nested_type();
|
let upstream_node_input_type = self.network_interface.input_type(&InputConnector::node(upstream_node, 0), &[]).0.nested_type();
|
||||||
|
|
||||||
|
// Check if this is the node we have been searching for.
|
||||||
|
if self.network_interface.reference(&upstream_node, &[]).is_some_and(|node_reference| node_reference == reference) {
|
||||||
|
existing_node_id = Some(upstream_node);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
let is_traversal_start = |node_id: NodeId| {
|
let is_traversal_start = |node_id: NodeId| {
|
||||||
self.layer_node.map(|layer| layer.to_node()) == Some(node_id) || self.network_interface.network(&[]).unwrap().exports.iter().any(|export| export.as_node() == Some(node_id))
|
self.layer_node.map(|layer| layer.to_node()) == Some(node_id) || self.network_interface.network(&[]).unwrap().exports.iter().any(|export| export.as_node() == Some(node_id))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// If the type changes then break?? This should at least be after checking if the node is correct (otherwise the brush tool breaks.)
|
||||||
if !is_traversal_start(upstream_node) && (self.network_interface.is_layer(&upstream_node, &[]) || upstream_node_input_type != layer_input_type) {
|
if !is_traversal_start(upstream_node) && (self.network_interface.is_layer(&upstream_node, &[]) || upstream_node_input_type != layer_input_type) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if self.network_interface.reference(&upstream_node, &[]).is_some_and(|node_reference| node_reference == reference) {
|
|
||||||
existing_node_id = Some(upstream_node);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new node if the node does not exist and update its inputs
|
// Create a new node if the node does not exist and update its inputs
|
||||||
|
|||||||
Reference in New Issue
Block a user