diff --git a/src/plugins/cpptools/searchsymbols.cpp b/src/plugins/cpptools/searchsymbols.cpp
index ae2c6edc6411ec78ae66eeff2f126e2456c4522f..e655b1e302ac6c39b783bcbf15c0aaf2b4dd3ae0 100644
--- a/src/plugins/cpptools/searchsymbols.cpp
+++ b/src/plugins/cpptools/searchsymbols.cpp
@@ -145,15 +145,14 @@ bool SearchSymbols::visit(Declaration *symbol)
 
 bool SearchSymbols::visit(Class *symbol)
 {
-    if (!(symbolsToSearchFor & Classes))
-        return false;
-
     QString name = symbolName(symbol);
     QString scopedName = scopedSymbolName(name);
     QString previousScope = switchScope(scopedName);
-    appendItem(separateScope ? name : scopedName,
-               separateScope ? previousScope : QString(),
-               ModelItemInfo::Class, symbol);
+    if (symbolsToSearchFor & Classes) {
+        appendItem(separateScope ? name : scopedName,
+                   separateScope ? previousScope : QString(),
+                   ModelItemInfo::Class, symbol);
+    }
     Scope *members = symbol->members();
     for (unsigned i = 0; i < members->symbolCount(); ++i) {
         accept(members->symbolAt(i));