diff --git a/app/widget/nodeview/nodeview.cpp b/app/widget/nodeview/nodeview.cpp index f39b6a66d..d43269fb3 100644 --- a/app/widget/nodeview/nodeview.cpp +++ b/app/widget/nodeview/nodeview.cpp @@ -119,9 +119,9 @@ void NodeView::SelectAll() void NodeView::DeselectAll() { - QList all_items = this->items(); + QList selected_items = scene_.selectedItems(); - foreach (QGraphicsItem* i, all_items) { + foreach (QGraphicsItem* i, selected_items) { i->setSelected(false); } } @@ -131,37 +131,18 @@ void NodeView::Select(const QList &nodes) DeselectAll(); foreach (Node* n, nodes) { - NodeViewItem* item = scene_.NodeToUIObject(n); - - if (item) { - item->setSelected(true); - } + scene_.NodeToUIObject(n)->setSelected(true); } } -void NodeView::SelectWithDependencies(const QList &nodes) +void NodeView::SelectWithDependencies(QList nodes) { - DeselectAll(); - - QList nodes_with_deps; - - foreach (Node* n, nodes) { - NodeViewItem* item = scene_.NodeToUIObject(n); - - if (item) { - item->setSelected(true); - } - - QList deps = n->GetDependencies(); - - foreach (Node* d, deps) { - item = scene_.NodeToUIObject(d); - - if (item) { - item->setSelected(true); - } - } + int original_length = nodes.size(); + for (int i=0;iGetDependencies()); } + + Select(nodes); } void NodeView::ItemsChanged() diff --git a/app/widget/nodeview/nodeview.h b/app/widget/nodeview/nodeview.h index a79e1fc73..4ea98bea3 100644 --- a/app/widget/nodeview/nodeview.h +++ b/app/widget/nodeview/nodeview.h @@ -55,7 +55,7 @@ public: void DeselectAll(); void Select(const QList& nodes); - void SelectWithDependencies(const QList& nodes); + void SelectWithDependencies(QList nodes); signals: /** diff --git a/app/widget/nodeview/nodeviewscene.cpp b/app/widget/nodeview/nodeviewscene.cpp index 712a8150b..266f56e7e 100644 --- a/app/widget/nodeview/nodeviewscene.cpp +++ b/app/widget/nodeview/nodeviewscene.cpp @@ -42,6 +42,11 @@ void NodeViewScene::SetGraph(NodeGraph *graph) graph_ = graph; } +const QHash &NodeViewScene::item_map() const +{ + return item_map_; +} + void NodeViewScene::AddNode(Node* node) { NodeViewItem* item = new NodeViewItem(); diff --git a/app/widget/nodeview/nodeviewscene.h b/app/widget/nodeview/nodeviewscene.h index 782970f3e..3316cd02b 100644 --- a/app/widget/nodeview/nodeviewscene.h +++ b/app/widget/nodeview/nodeviewscene.h @@ -38,6 +38,8 @@ public: void SetGraph(NodeGraph* graph); + const QHash& item_map() const; + public slots: /** * @brief Slot when a Node is added to a graph (SetGraph() connects this)