Skip to content

Commit 883e8a0

Browse files
zmothpaceholder
authored andcommitted
Fix a bug in the scene menu search, update the treeView creation process
1 parent 0fb9954 commit 883e8a0

File tree

1 file changed

+18
-22
lines changed

1 file changed

+18
-22
lines changed

src/DataFlowGraphicsScene.cpp

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,6 @@ createSceneMenu(QPointF const scenePos)
7676
{
7777
QMenu* modelMenu = new QMenu();
7878

79-
auto skipText = QStringLiteral("skip me");
80-
8179
// Add filterbox to the context menu
8280
auto* txtBox = new QLineEdit(modelMenu);
8381
txtBox->setPlaceholderText(QStringLiteral("Filter"));
@@ -101,39 +99,38 @@ createSceneMenu(QPointF const scenePos)
10199

102100
auto registry = _graphModel.dataModelRegistry();
103101

104-
QMap<QString, QTreeWidgetItem*> topLevelItems;
105102
for (auto const& cat : registry->categories())
106103
{
107104
auto item = new QTreeWidgetItem(treeView);
108105
item->setText(0, cat);
109-
item->setData(0, Qt::UserRole, skipText);
110-
topLevelItems[cat] = item;
106+
item->setFlags(item->flags() & ~Qt::ItemIsSelectable);
111107
}
112108

113109
for (auto const& assoc : registry->registeredModelsCategoryAssociation())
114110
{
115-
auto parent = topLevelItems[assoc.second];
116-
auto item = new QTreeWidgetItem(parent);
111+
QList<QTreeWidgetItem*> parent = treeView->findItems(assoc.second,
112+
Qt::MatchExactly);
113+
114+
if (parent.count() <= 0)
115+
continue;
116+
117+
auto item = new QTreeWidgetItem(parent.first());
117118
item->setText(0, assoc.first);
118-
item->setData(0, Qt::UserRole, assoc.first);
119119
}
120120

121121
treeView->expandAll();
122122

123123
connect(treeView, &QTreeWidget::itemClicked,
124124
[this,
125125
modelMenu,
126-
skipText,
127126
scenePos](QTreeWidgetItem* item, int)
128127
{
129-
QString modelName = item->data(0, Qt::UserRole).toString();
130-
131-
if (modelName == skipText)
128+
if(!(item->flags() & (Qt::ItemIsSelectable)))
132129
{
133130
return;
134131
}
135132

136-
NodeId nodeId = this->_graphModel.addNode(modelName);
133+
NodeId nodeId = this->_graphModel.addNode(item->text(0));
137134

138135
if (nodeId != InvalidNodeId)
139136
{
@@ -147,17 +144,16 @@ createSceneMenu(QPointF const scenePos)
147144

148145
//Setup filtering
149146
connect(txtBox, &QLineEdit::textChanged,
150-
[&](const QString& text)
147+
[treeView](const QString& text)
151148
{
152-
for (auto& topLvlItem : topLevelItems)
149+
QTreeWidgetItemIterator it(treeView, QTreeWidgetItemIterator::NoChildren);
150+
while (*it)
153151
{
154-
for (int i = 0; i < topLvlItem->childCount(); ++i)
155-
{
156-
auto child = topLvlItem->child(i);
157-
auto modelName = child->data(0, Qt::UserRole).toString();
158-
const bool match = (modelName.contains(text, Qt::CaseInsensitive));
159-
child->setHidden(!match);
160-
}
152+
auto modelName = (*it)->data(0, Qt::UserRole).toString();
153+
const bool match = (modelName.contains(text, Qt::CaseInsensitive));
154+
(*it)->setHidden(!match);
155+
156+
++it;
161157
}
162158
});
163159

0 commit comments

Comments
 (0)