nodeview: improved and optimized some selection code
This commit is contained in:
@@ -119,9 +119,9 @@ void NodeView::SelectAll()
|
||||
|
||||
void NodeView::DeselectAll()
|
||||
{
|
||||
QList<QGraphicsItem *> all_items = this->items();
|
||||
QList<QGraphicsItem *> 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<Node *> &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<Node *> &nodes)
|
||||
void NodeView::SelectWithDependencies(QList<Node *> nodes)
|
||||
{
|
||||
DeselectAll();
|
||||
|
||||
QList<Node*> nodes_with_deps;
|
||||
|
||||
foreach (Node* n, nodes) {
|
||||
NodeViewItem* item = scene_.NodeToUIObject(n);
|
||||
|
||||
if (item) {
|
||||
item->setSelected(true);
|
||||
}
|
||||
|
||||
QList<Node*> 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;i<original_length;i++) {
|
||||
nodes.append(nodes.at(i)->GetDependencies());
|
||||
}
|
||||
|
||||
Select(nodes);
|
||||
}
|
||||
|
||||
void NodeView::ItemsChanged()
|
||||
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
void DeselectAll();
|
||||
|
||||
void Select(const QList<Node*>& nodes);
|
||||
void SelectWithDependencies(const QList<Node*>& nodes);
|
||||
void SelectWithDependencies(QList<Node *> nodes);
|
||||
|
||||
signals:
|
||||
/**
|
||||
|
||||
@@ -42,6 +42,11 @@ void NodeViewScene::SetGraph(NodeGraph *graph)
|
||||
graph_ = graph;
|
||||
}
|
||||
|
||||
const QHash<Node *, NodeViewItem *> &NodeViewScene::item_map() const
|
||||
{
|
||||
return item_map_;
|
||||
}
|
||||
|
||||
void NodeViewScene::AddNode(Node* node)
|
||||
{
|
||||
NodeViewItem* item = new NodeViewItem();
|
||||
|
||||
@@ -38,6 +38,8 @@ public:
|
||||
|
||||
void SetGraph(NodeGraph* graph);
|
||||
|
||||
const QHash<Node*, NodeViewItem*>& item_map() const;
|
||||
|
||||
public slots:
|
||||
/**
|
||||
* @brief Slot when a Node is added to a graph (SetGraph() connects this)
|
||||
|
||||
Reference in New Issue
Block a user