diff --git a/app/widget/nodeview/nodeview.cpp b/app/widget/nodeview/nodeview.cpp index cba47d257..4dbbd72f1 100644 --- a/app/widget/nodeview/nodeview.cpp +++ b/app/widget/nodeview/nodeview.cpp @@ -74,6 +74,7 @@ void NodeView::SetGraph(NodeGraph *graph) if (graph_ != nullptr) { disconnect(graph_, &NodeGraph::NodeAdded, &scene_, &NodeViewScene::AddNode); disconnect(graph_, &NodeGraph::NodeRemoved, &scene_, &NodeViewScene::RemoveNode); + disconnect(graph_, &NodeGraph::NodeRemoved, this, &NodeView::GraphNodeRemoved); disconnect(graph_, &NodeGraph::EdgeAdded, this, &NodeView::GraphEdgeAdded); disconnect(graph_, &NodeGraph::EdgeRemoved, this, &NodeView::GraphEdgeRemoved); } @@ -89,6 +90,7 @@ void NodeView::SetGraph(NodeGraph *graph) if (graph_ != nullptr) { connect(graph_, &NodeGraph::NodeAdded, &scene_, &NodeViewScene::AddNode); connect(graph_, &NodeGraph::NodeRemoved, &scene_, &NodeViewScene::RemoveNode); + connect(graph_, &NodeGraph::NodeRemoved, this, &NodeView::GraphNodeRemoved); connect(graph_, &NodeGraph::EdgeAdded, this, &NodeView::GraphEdgeAdded); connect(graph_, &NodeGraph::EdgeRemoved, this, &NodeView::GraphEdgeRemoved); @@ -977,6 +979,13 @@ void NodeView::AssociatedNodeDestroyed() DisassociateNode(static_cast(sender()), true); } +void NodeView::GraphNodeRemoved(Node *node) +{ + if (selected_blocks_.contains(static_cast(node))) { + DeselectBlocks({static_cast(node)}); + } +} + void NodeView::GraphEdgeAdded(NodeEdgePtr edge) { Node* input_node = edge->input()->parentNode(); diff --git a/app/widget/nodeview/nodeview.h b/app/widget/nodeview/nodeview.h index d2c7d7a95..573aaa79d 100644 --- a/app/widget/nodeview/nodeview.h +++ b/app/widget/nodeview/nodeview.h @@ -145,6 +145,8 @@ private slots: void AssociatedNodeDestroyed(); + void GraphNodeRemoved(Node* node); + void GraphEdgeAdded(NodeEdgePtr edge); void GraphEdgeRemoved(NodeEdgePtr edge);