diff --git a/src/plugins/autotest/gtest/gtesttreeitem.cpp b/src/plugins/autotest/gtest/gtesttreeitem.cpp index 335979131ae..ae1e8cf86b9 100644 --- a/src/plugins/autotest/gtest/gtesttreeitem.cpp +++ b/src/plugins/autotest/gtest/gtesttreeitem.cpp @@ -540,5 +540,10 @@ TestTreeItem *GTestTreeItem::applyFilters() return filtered; } +bool GTestTreeItem::shouldBeAddedAfterFiltering() const +{ + return type() == TestTreeItem::TestFunctionOrSet || childCount(); +} + } // namespace Internal } // namespace Autotest diff --git a/src/plugins/autotest/gtest/gtesttreeitem.h b/src/plugins/autotest/gtest/gtesttreeitem.h index 8f1300007f2..4464a83a0cc 100644 --- a/src/plugins/autotest/gtest/gtesttreeitem.h +++ b/src/plugins/autotest/gtest/gtesttreeitem.h @@ -74,6 +74,7 @@ public: bool isGroupNodeFor(const TestTreeItem *other) const override; bool isGroupable() const override; TestTreeItem *applyFilters() override; + bool shouldBeAddedAfterFiltering() const override; private: bool modifyTestSetContent(const GTestParseResult *result); QList getTestConfigurations(bool ignoreCheckState) const; diff --git a/src/plugins/autotest/testtreeitem.h b/src/plugins/autotest/testtreeitem.h index 74e6c98d8f7..0a3bf7d72c7 100644 --- a/src/plugins/autotest/testtreeitem.h +++ b/src/plugins/autotest/testtreeitem.h @@ -126,6 +126,8 @@ public: // based on (internal) filters this will be used to filter out sub items (and remove them) // returns a copy of the item that contains the filtered out children or nullptr virtual TestTreeItem *applyFilters() { return nullptr; } + // decide whether an item should still be added to the treemodel + virtual bool shouldBeAddedAfterFiltering() const { return true; } virtual QSet internalTargets() const; protected: void copyBasicDataFrom(const TestTreeItem *other); diff --git a/src/plugins/autotest/testtreemodel.cpp b/src/plugins/autotest/testtreemodel.cpp index 7e4e577812a..49fc3d3d2f6 100644 --- a/src/plugins/autotest/testtreemodel.cpp +++ b/src/plugins/autotest/testtreemodel.cpp @@ -215,7 +215,7 @@ void TestTreeModel::syncTestFrameworks() void TestTreeModel::filterAndInsert(TestTreeItem *item, TestTreeItem *root, bool groupingEnabled) { TestTreeItem *filtered = item->applyFilters(); - if (item->type() != TestTreeItem::TestCase || item->childCount()) + if (item->shouldBeAddedAfterFiltering()) insertItemInParent(item, root, groupingEnabled); else // might be that all children have been filtered out delete item;