diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index ade877b9d13..0cc5aefda79 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -1919,11 +1919,11 @@ void AddIncludeForUndefinedIdentifier::match(const CppQuickFixInterface &interfa QList matches = classesFilter->matchesFor(dummyInterface, className); bool classExists = false; foreach (const Core::LocatorFilterEntry &entry, matches) { - const ModelItemInfo info = entry.internalData.value(); - if (info.symbolName != className) + ModelItemInfo::Ptr info = entry.internalData.value(); + if (info->symbolName() != className) continue; classExists = true; - const QString &fileName = info.fileName; + const QString &fileName = info->fileName(); const QFileInfo fileInfo(fileName); // find the shortest way to include fileName given the includePaths diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp index 52877b73c8b..8db0a321408 100644 --- a/src/plugins/cpptools/builtinindexingsupport.cpp +++ b/src/plugins/cpptools/builtinindexingsupport.cpp @@ -125,19 +125,19 @@ public: break; if (m_fileNames.isEmpty() || m_fileNames.contains(it.value()->fileName())) { QVector resultItems; - QList modelInfos = search(it.value()); - foreach (const ModelItemInfo &info, modelInfos) { - int index = matcher.indexIn(info.symbolName); + QList modelInfos = search(it.value()); + foreach (const ModelItemInfo::Ptr &info, modelInfos) { + int index = matcher.indexIn(info->symbolName()); if (index != -1) { - QString text = info.symbolName; - QString scope = info.symbolScope; - if (info.type == ModelItemInfo::Function) { + QString text = info->symbolName(); + QString scope = info->symbolScope(); + if (info->type() == ModelItemInfo::Function) { QString name; - info.unqualifiedNameAndScope(info.symbolName, &name, &scope); - text = name + info.symbolType; - } else if (info.type == ModelItemInfo::Declaration){ - text = ModelItemInfo::representDeclaration(info.symbolName, - info.symbolType); + info->unqualifiedNameAndScope(info->symbolName(), &name, &scope); + text = name + info->symbolType(); + } else if (info->type() == ModelItemInfo::Declaration){ + text = ModelItemInfo::representDeclaration(info->symbolName(), + info->symbolType()); } Core::SearchResultItem item; @@ -145,7 +145,7 @@ public: item.text = text; item.textMarkPos = -1; item.textMarkLength = 0; - item.icon = info.icon; + item.icon = info->icon(); item.lineNumber = -1; item.userData = qVariantFromValue(info); resultItems << item; diff --git a/src/plugins/cpptools/cppclassesfilter.cpp b/src/plugins/cpptools/cppclassesfilter.cpp index a32ec4a562f..2f9eb3809cb 100644 --- a/src/plugins/cpptools/cppclassesfilter.cpp +++ b/src/plugins/cpptools/cppclassesfilter.cpp @@ -45,18 +45,18 @@ CppClassesFilter::~CppClassesFilter() { } -QList > CppClassesFilter::itemsToMatchUserInputAgainst() const +QList > CppClassesFilter::itemsToMatchUserInputAgainst() const { - return QList >() << m_data->classes(); + return QList >() << m_data->classes(); } -Core::LocatorFilterEntry CppClassesFilter::filterEntryFromModelItemInfo(const ModelItemInfo &info) +Core::LocatorFilterEntry CppClassesFilter::filterEntryFromModelItemInfo(ModelItemInfo::Ptr info) { const QVariant id = qVariantFromValue(info); - Core::LocatorFilterEntry filterEntry(this, info.symbolName, id, info.icon); - filterEntry.extraInfo = info.symbolScope.isEmpty() - ? info.shortNativeFilePath() - : info.symbolScope; + Core::LocatorFilterEntry filterEntry(this, info->symbolName(), id, info->icon()); + filterEntry.extraInfo = info->symbolScope().isEmpty() + ? info->shortNativeFilePath() + : info->symbolScope(); return filterEntry; } diff --git a/src/plugins/cpptools/cppclassesfilter.h b/src/plugins/cpptools/cppclassesfilter.h index 40888d6c336..09c70bb0cba 100644 --- a/src/plugins/cpptools/cppclassesfilter.h +++ b/src/plugins/cpptools/cppclassesfilter.h @@ -45,8 +45,8 @@ public: ~CppClassesFilter(); private: - QList > itemsToMatchUserInputAgainst() const; - Core::LocatorFilterEntry filterEntryFromModelItemInfo(const ModelItemInfo &info); + QList > itemsToMatchUserInputAgainst() const; + Core::LocatorFilterEntry filterEntryFromModelItemInfo(ModelItemInfo::Ptr info); }; } // namespace CppTools diff --git a/src/plugins/cpptools/cppcurrentdocumentfilter.cpp b/src/plugins/cpptools/cppcurrentdocumentfilter.cpp index 78308e173a1..74068f19fde 100644 --- a/src/plugins/cpptools/cppcurrentdocumentfilter.cpp +++ b/src/plugins/cpptools/cppcurrentdocumentfilter.cpp @@ -84,28 +84,28 @@ QList CppCurrentDocumentFilter::matchesFor( const Qt::CaseSensitivity caseSensitivityForPrefix = caseSensitivity(entry); - foreach (const ModelItemInfo & info, m_itemsOfCurrentDoc) - { + foreach (ModelItemInfo::Ptr info, m_itemsOfCurrentDoc) { if (future.isCanceled()) break; - QString matchString = info.symbolName; - if (info.type == ModelItemInfo::Declaration) - matchString = ModelItemInfo::representDeclaration(info.symbolName, info.symbolType); - else if (info.type == ModelItemInfo::Function) - matchString += info.symbolType; + QString matchString = info->symbolName(); + if (info->type() == ModelItemInfo::Declaration) + matchString = ModelItemInfo::representDeclaration(info->symbolName(), + info->symbolType()); + else if (info->type() == ModelItemInfo::Function) + matchString += info->symbolType(); if ((hasWildcard && regexp.exactMatch(matchString)) || (!hasWildcard && matcher.indexIn(matchString) != -1)) { QVariant id = qVariantFromValue(info); QString name = matchString; - QString extraInfo = info.symbolScope; - if (info.type == ModelItemInfo::Function) { - if (info.unqualifiedNameAndScope(matchString, &name, &extraInfo)) - name += info.symbolType; + QString extraInfo = info->symbolScope(); + if (info->type() == ModelItemInfo::Function) { + if (info->unqualifiedNameAndScope(matchString, &name, &extraInfo)) + name += info->symbolType(); } - Core::LocatorFilterEntry filterEntry(this, name, id, info.icon); + Core::LocatorFilterEntry filterEntry(this, name, id, info->icon()); filterEntry.extraInfo = extraInfo; if (matchString.startsWith(entry, caseSensitivityForPrefix)) @@ -123,8 +123,8 @@ QList CppCurrentDocumentFilter::matchesFor( void CppCurrentDocumentFilter::accept(Core::LocatorFilterEntry selection) const { - ModelItemInfo info = qvariant_cast(selection.internalData); - Core::EditorManager::openEditorAt(info.fileName, info.line, info.column); + ModelItemInfo::Ptr info = qvariant_cast(selection.internalData); + Core::EditorManager::openEditorAt(info->fileName(), info->line(), info->column()); } void CppCurrentDocumentFilter::refresh(QFutureInterface &future) diff --git a/src/plugins/cpptools/cppcurrentdocumentfilter.h b/src/plugins/cpptools/cppcurrentdocumentfilter.h index f3f7560ce19..0b24fe4ee4f 100644 --- a/src/plugins/cpptools/cppcurrentdocumentfilter.h +++ b/src/plugins/cpptools/cppcurrentdocumentfilter.h @@ -61,7 +61,7 @@ private slots: private: CppModelManager * m_modelManager; QString m_currentFileName; - QList m_itemsOfCurrentDoc; + QList m_itemsOfCurrentDoc; SearchSymbols search; }; diff --git a/src/plugins/cpptools/cppfunctionsfilter.cpp b/src/plugins/cpptools/cppfunctionsfilter.cpp index 1f17402763d..2b555e8df32 100644 --- a/src/plugins/cpptools/cppfunctionsfilter.cpp +++ b/src/plugins/cpptools/cppfunctionsfilter.cpp @@ -44,22 +44,22 @@ CppFunctionsFilter::~CppFunctionsFilter() { } -QList > CppFunctionsFilter::itemsToMatchUserInputAgainst() const +QList > CppFunctionsFilter::itemsToMatchUserInputAgainst() const { - return QList >() << m_data->functions(); + return QList >() << m_data->functions(); } -Core::LocatorFilterEntry CppFunctionsFilter::filterEntryFromModelItemInfo(const CppTools::ModelItemInfo &info) +Core::LocatorFilterEntry CppFunctionsFilter::filterEntryFromModelItemInfo(ModelItemInfo::Ptr info) { const QVariant id = qVariantFromValue(info); - QString name = info.symbolName; - QString extraInfo = info.symbolScope; - info.unqualifiedNameAndScope(name, &name, &extraInfo); + QString name = info->symbolName(); + QString extraInfo = info->symbolScope(); + info->unqualifiedNameAndScope(name, &name, &extraInfo); if (extraInfo.isEmpty()) - extraInfo = info.shortNativeFilePath(); + extraInfo = info->shortNativeFilePath(); - Core::LocatorFilterEntry filterEntry(this, name + info.symbolType, id, info.icon); + Core::LocatorFilterEntry filterEntry(this, name + info->symbolType(), id, info->icon()); filterEntry.extraInfo = extraInfo; return filterEntry; diff --git a/src/plugins/cpptools/cppfunctionsfilter.h b/src/plugins/cpptools/cppfunctionsfilter.h index 5926f645cd7..de30197792c 100644 --- a/src/plugins/cpptools/cppfunctionsfilter.h +++ b/src/plugins/cpptools/cppfunctionsfilter.h @@ -45,8 +45,8 @@ public: ~CppFunctionsFilter(); private: - QList > itemsToMatchUserInputAgainst() const; - Core::LocatorFilterEntry filterEntryFromModelItemInfo(const ModelItemInfo &info); + QList > itemsToMatchUserInputAgainst() const; + Core::LocatorFilterEntry filterEntryFromModelItemInfo(ModelItemInfo::Ptr info); }; } // namespace Internal diff --git a/src/plugins/cpptools/cpplocatordata.cpp b/src/plugins/cpptools/cpplocatordata.cpp index 27cebacd26b..948d22343c8 100644 --- a/src/plugins/cpptools/cpplocatordata.cpp +++ b/src/plugins/cpptools/cpplocatordata.cpp @@ -53,19 +53,19 @@ CppLocatorData::CppLocatorData(CppModelManager *modelManager) this, SLOT(onAboutToRemoveFiles(QStringList))); } -QList CppLocatorData::enums() +QList CppLocatorData::enums() { flushPendingDocument(true); return allModelItemInfos(m_allEnums); } -QList CppLocatorData::classes() +QList CppLocatorData::classes() { flushPendingDocument(true); return allModelItemInfos(m_allClasses); } -QList CppLocatorData::functions() +QList CppLocatorData::functions() { flushPendingDocument(true); return allModelItemInfos(m_allFunctions); @@ -120,15 +120,15 @@ void CppLocatorData::flushPendingDocument(bool force) foreach (CPlusPlus::Document::Ptr doc, m_pendingDocuments) { const QString fileName = findOrInsertFilePath(doc->fileName()); - QList resultsEnums; - QList resultsClasses; - QList resultsFunctions; + QList resultsEnums; + QList resultsClasses; + QList resultsFunctions; const int sizeHint = m_allEnums[fileName].size() + m_allClasses[fileName].size() + m_allFunctions[fileName].size() + 10; - const QList results = m_search(doc, sizeHint); - foreach (const ModelItemInfo &info, results) { - switch (info.type) { + const QList results = m_search(doc, sizeHint); + foreach (ModelItemInfo::Ptr info, results) { + switch (info->type()) { case ModelItemInfo::Enum: resultsEnums.append(info); break; @@ -152,11 +152,11 @@ void CppLocatorData::flushPendingDocument(bool force) m_pendingDocuments.reserve(MaxPendingDocuments); } -QList CppLocatorData::allModelItemInfos(const QHash > &items) const +QList CppLocatorData::allModelItemInfos(const QHash> &items) const { - QList result; - QHashIterator > it(items); + QList result; + QHashIterator > it(items); while (it.hasNext()) { it.next(); result.append(it.value()); diff --git a/src/plugins/cpptools/cpplocatordata.h b/src/plugins/cpptools/cpplocatordata.h index b9a9ca1c18f..eb85e52df73 100644 --- a/src/plugins/cpptools/cpplocatordata.h +++ b/src/plugins/cpptools/cpplocatordata.h @@ -49,9 +49,9 @@ class CppLocatorData : public QObject public: explicit CppLocatorData(CppModelManager *modelManager); - QList enums(); - QList classes(); - QList functions(); + QList enums(); + QList classes(); + QList functions(); private slots: void onDocumentUpdated(const CPlusPlus::Document::Ptr &document); @@ -59,8 +59,8 @@ private slots: private: void flushPendingDocument(bool force); - QList allModelItemInfos(const QHash > &items) const; + QList allModelItemInfos( + const QHash> &items) const; QString findOrInsertFilePath(const QString &path) { return m_strings.insert(path); } @@ -71,9 +71,9 @@ private: StringTable &m_strings; // Used to avoid QString duplication SearchSymbols m_search; - QHash > m_allEnums; - QHash > m_allClasses; - QHash > m_allFunctions; + QHash > m_allEnums; + QHash > m_allClasses; + QHash > m_allFunctions; mutable QMutex m_pendingDocumentsMutex; QVector m_pendingDocuments; diff --git a/src/plugins/cpptools/cpplocatorfilter.cpp b/src/plugins/cpptools/cpplocatorfilter.cpp index e4286e13ee1..21cd38854ca 100644 --- a/src/plugins/cpptools/cpplocatorfilter.cpp +++ b/src/plugins/cpptools/cpplocatorfilter.cpp @@ -47,13 +47,14 @@ CppLocatorFilter::~CppLocatorFilter() { } -Core::LocatorFilterEntry CppLocatorFilter::filterEntryFromModelItemInfo(const CppTools::ModelItemInfo &info) +Core::LocatorFilterEntry CppLocatorFilter::filterEntryFromModelItemInfo(ModelItemInfo::Ptr info) { const QVariant id = qVariantFromValue(info); - Core::LocatorFilterEntry filterEntry(this, info.scopedSymbolName(), id, info.icon); - filterEntry.extraInfo = info.type == ModelItemInfo::Class || info.type == ModelItemInfo::Enum - ? info.shortNativeFilePath() - : info.symbolType; + Core::LocatorFilterEntry filterEntry(this, info->scopedSymbolName(), id, info->icon()); + if (info->type() == ModelItemInfo::Class || info->type() == ModelItemInfo::Enum) + filterEntry.extraInfo = info->shortNativeFilePath(); + else + filterEntry.extraInfo = info->symbolType(); return filterEntry; } @@ -63,9 +64,9 @@ void CppLocatorFilter::refresh(QFutureInterface &future) Q_UNUSED(future) } -QList > CppLocatorFilter::itemsToMatchUserInputAgainst() const +QList > CppLocatorFilter::itemsToMatchUserInputAgainst() const { - return QList >() + return QList >() << m_data->classes() << m_data->functions() << m_data->enums(); @@ -77,7 +78,8 @@ static bool compareLexigraphically(const Core::LocatorFilterEntry &a, return a.displayName < b.displayName; } -QList CppLocatorFilter::matchesFor(QFutureInterface &future, const QString &origEntry) +QList CppLocatorFilter::matchesFor( + QFutureInterface &future, const QString &origEntry) { QString entry = trimWildcards(origEntry); QList goodEntries; @@ -91,12 +93,13 @@ QList CppLocatorFilter::matchesFor(QFutureInterface > itemLists = itemsToMatchUserInputAgainst(); - foreach (const QList &items, itemLists) { - foreach (const ModelItemInfo &info, items) { + const QList > itemLists = itemsToMatchUserInputAgainst(); + foreach (const QList &items, itemLists) { + foreach (ModelItemInfo::Ptr info, items) { if (future.isCanceled()) break; - const QString matchString = hasColonColon ? info.scopedSymbolName() : info.symbolName; + const QString matchString = hasColonColon ? info->scopedSymbolName() + : info->symbolName(); if ((hasWildcard && regexp.exactMatch(matchString)) || (!hasWildcard && matcher.indexIn(matchString) != -1)) { const Core::LocatorFilterEntry filterEntry = filterEntryFromModelItemInfo(info); @@ -119,6 +122,6 @@ QList CppLocatorFilter::matchesFor(QFutureInterface(selection.internalData); - Core::EditorManager::openEditorAt(info.fileName, info.line, info.column); + ModelItemInfo::Ptr info = qvariant_cast(selection.internalData); + Core::EditorManager::openEditorAt(info->fileName(), info->line(), info->column()); } diff --git a/src/plugins/cpptools/cpplocatorfilter.h b/src/plugins/cpptools/cpplocatorfilter.h index aba6fe4a275..527e3f050b2 100644 --- a/src/plugins/cpptools/cpplocatorfilter.h +++ b/src/plugins/cpptools/cpplocatorfilter.h @@ -48,13 +48,14 @@ public: CppLocatorFilter(CppLocatorData *locatorData); ~CppLocatorFilter(); - QList matchesFor(QFutureInterface &future, const QString &entry); + QList matchesFor(QFutureInterface &future, + const QString &entry); void accept(Core::LocatorFilterEntry selection) const; void refresh(QFutureInterface &future); -private: - virtual QList > itemsToMatchUserInputAgainst() const; - virtual Core::LocatorFilterEntry filterEntryFromModelItemInfo(const ModelItemInfo &info); +protected: + virtual QList > itemsToMatchUserInputAgainst() const; + virtual Core::LocatorFilterEntry filterEntryFromModelItemInfo(ModelItemInfo::Ptr info); protected: CppLocatorData *m_data; diff --git a/src/plugins/cpptools/searchsymbols.cpp b/src/plugins/cpptools/searchsymbols.cpp index 1df767db60f..2dfd878deb0 100644 --- a/src/plugins/cpptools/searchsymbols.cpp +++ b/src/plugins/cpptools/searchsymbols.cpp @@ -53,7 +53,8 @@ void SearchSymbols::setSymbolsToSearchFor(const SymbolTypes &types) symbolsToSearchFor = types; } -QList SearchSymbols::operator()(Document::Ptr doc, int sizeHint, const QString &scope) +QList SearchSymbols::operator()(Document::Ptr doc, int sizeHint, + const QString &scope) { QString previousScope = switchScope(scope); items.clear(); @@ -62,7 +63,7 @@ QList SearchSymbols::operator()(Document::Ptr doc, int sizeHint, accept(doc->globalSymbolAt(i)); } (void) switchScope(previousScope); - QList result = items; + QList result = items; strings.scheduleGC(); items.clear(); m_paths.clear(); @@ -288,12 +289,12 @@ void SearchSymbols::appendItem(const QString &symbolName, const QString &symbolT } const QIcon icon = icons.iconForSymbol(symbol); - items.append(ModelItemInfo(findOrInsert(symbolName), - findOrInsert(symbolType), - findOrInsert(symbolScope), - itemType, - findOrInsert(path), - symbol->line(), - symbol->column() - 1, // 1-based vs 0-based column - icon)); + items.append(ModelItemInfo::create(findOrInsert(symbolName), + findOrInsert(symbolType), + findOrInsert(symbolScope), + itemType, + findOrInsert(path), + symbol->line(), + symbol->column() - 1, // 1-based vs 0-based column + icon)); } diff --git a/src/plugins/cpptools/searchsymbols.h b/src/plugins/cpptools/searchsymbols.h index dee20aa3c7d..82e2bc62296 100644 --- a/src/plugins/cpptools/searchsymbols.h +++ b/src/plugins/cpptools/searchsymbols.h @@ -43,22 +43,21 @@ #include #include #include +#include #include #include namespace CppTools { -struct CPPTOOLS_EXPORT ModelItemInfo +class CPPTOOLS_EXPORT ModelItemInfo { + Q_DISABLE_COPY(ModelItemInfo) + +public: enum ItemType { Enum, Class, Function, Declaration }; - ModelItemInfo() - : type(Declaration), - line(0), - column(0) - { } - +private: ModelItemInfo(const QString &symbolName, const QString &symbolType, const QString &symbolScope, @@ -67,38 +66,42 @@ struct CPPTOOLS_EXPORT ModelItemInfo int line, int column, const QIcon &icon) - : symbolName(symbolName), - symbolType(symbolType), - symbolScope(symbolScope), - fileName(fileName), - icon(icon), - type(type), - line(line), - column(column) - { } + : m_symbolName(symbolName), + m_symbolType(symbolType), + m_symbolScope(symbolScope), + m_fileName(fileName), + m_icon(icon), + m_type(type), + m_line(line), + m_column(column) + {} - ModelItemInfo(const ModelItemInfo &otherInfo) - : symbolName(otherInfo.symbolName), - symbolType(otherInfo.symbolType), - symbolScope(otherInfo.symbolScope), - fileName(otherInfo.fileName), - icon(otherInfo.icon), - type(otherInfo.type), - line(otherInfo.line), - column(otherInfo.column) - { } +public: + typedef QSharedPointer Ptr; + static Ptr create(const QString &symbolName, + const QString &symbolType, + const QString &symbolScope, + ItemType type, + const QString &fileName, + int line, + int column, + const QIcon &icon) + { + return Ptr(new ModelItemInfo( + symbolName, symbolType, symbolScope, type, fileName, line, column, icon)); + } QString scopedSymbolName() const { - return symbolScope.isEmpty() - ? symbolName - : symbolScope + QLatin1String("::") + symbolName; + return m_symbolScope.isEmpty() + ? m_symbolName + : m_symbolScope + QLatin1String("::") + m_symbolName; } bool unqualifiedNameAndScope(const QString &defaultName, QString *name, QString *scope) const { *name = defaultName; - *scope = symbolScope; + *scope = m_symbolScope; const QString qualifiedName = scopedSymbolName(); const int colonColonPosition = qualifiedName.lastIndexOf(QLatin1String("::")); if (colonColonPosition != -1) { @@ -121,16 +124,26 @@ struct CPPTOOLS_EXPORT ModelItemInfo } QString shortNativeFilePath() const - { return Utils::FileUtils::shortNativePath(Utils::FileName::fromString(fileName)); } + { return Utils::FileUtils::shortNativePath(Utils::FileName::fromString(m_fileName)); } - QString symbolName; // as found in the code, therefore might be qualified - QString symbolType; - QString symbolScope; - QString fileName; - QIcon icon; - ItemType type; - int line; - int column; + QString symbolName() const { return m_symbolName; } + QString symbolType() const { return m_symbolType; } + QString symbolScope() const { return m_symbolScope; } + QString fileName() const { return m_fileName; } + QIcon icon() const { return m_icon; } + ItemType type() const { return m_type; } + int line() const { return m_line; } + int column() const { return m_column; } + +private: + QString m_symbolName; // as found in the code, therefore might be qualified + QString m_symbolType; + QString m_symbolScope; + QString m_fileName; + QIcon m_icon; + ItemType m_type; + int m_line; + int m_column; }; class SearchSymbols: public std::binary_function >, @@ -145,10 +158,11 @@ public: void setSymbolsToSearchFor(const SymbolTypes &types); - QList operator()(CPlusPlus::Document::Ptr doc, int sizeHint = 500) + QList operator()(CPlusPlus::Document::Ptr doc, int sizeHint = 500) { return operator()(doc, sizeHint, QString()); } - QList operator()(CPlusPlus::Document::Ptr doc, int sizeHint, const QString &scope); + QList operator()(CPlusPlus::Document::Ptr doc, int sizeHint, + const QString &scope); protected: using SymbolVisitor::visit; @@ -201,7 +215,7 @@ private: QString _scope; CPlusPlus::Overview overview; CPlusPlus::Icons icons; - QList items; + QList items; SymbolTypes symbolsToSearchFor; QHash m_paths; }; @@ -209,6 +223,6 @@ private: } // namespace CppTools Q_DECLARE_OPERATORS_FOR_FLAGS(CppTools::SearchSymbols::SymbolTypes) -Q_DECLARE_METATYPE(CppTools::ModelItemInfo) +Q_DECLARE_METATYPE(CppTools::ModelItemInfo::Ptr) #endif // SEARCHSYMBOLS_H diff --git a/src/plugins/cpptools/symbolsfindfilter.cpp b/src/plugins/cpptools/symbolsfindfilter.cpp index b8ce6c44533..1b5ae8d76cd 100644 --- a/src/plugins/cpptools/symbolsfindfilter.cpp +++ b/src/plugins/cpptools/symbolsfindfilter.cpp @@ -181,10 +181,10 @@ void SymbolsFindFilter::finish() void SymbolsFindFilter::openEditor(const Core::SearchResultItem &item) { - if (!item.userData.canConvert()) + if (!item.userData.canConvert()) return; - ModelItemInfo info = item.userData.value(); - EditorManager::openEditorAt(info.fileName, info.line, info.column); + ModelItemInfo::Ptr info = item.userData.value(); + EditorManager::openEditorAt(info->fileName(), info->line(), info->column()); } QWidget *SymbolsFindFilter::createConfigWidget()