diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2009-11-09 13:53:28 +0100 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2009-11-09 18:42:49 +0100 |
commit | a1d9cac005e8bf23e922ca2183e248ec24073d41 (patch) | |
tree | 6d043581679131462e27cfe9f49c98923d632124 | |
parent | ac9eea0dc1d1990eb2e6ee3fc60b6f6d1ca7744c (diff) |
Code model: Fix Windows issues (duplicate matches).
Ensure the code model receives file names with clean paths ('/')
and fix paths in the relevant places of the code model. Pass on clean
paths from Cpp reference find and display them correctly in the search
window tooltip.
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
(cherry picked from commit d2bd092b47c8d4f81855228d158cc1b81ead8c00)
-rw-r--r-- | src/libs/cplusplus/CppDocument.cpp | 10 | ||||
-rw-r--r-- | src/libs/cplusplus/CppDocument.h | 1 | ||||
-rw-r--r-- | src/libs/cplusplus/FindUsages.cpp | 3 | ||||
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 2 | ||||
-rw-r--r-- | src/plugins/find/searchresulttreemodel.cpp | 6 |
6 files changed, 16 insertions, 10 deletions
diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp index b05525b8547..f0c6665a46c 100644 --- a/src/libs/cplusplus/CppDocument.cpp +++ b/src/libs/cplusplus/CppDocument.cpp @@ -42,6 +42,7 @@ #include <QtCore/QByteArray> #include <QtCore/QBitArray> +#include <QtCore/QDir> #include <QtCore/QtDebug> /*! @@ -108,7 +109,7 @@ private: Document::Document(const QString &fileName) - : _fileName(fileName), + : _fileName(QDir::cleanPath(fileName)), _globalNamespace(0), _revision(0) { @@ -173,7 +174,7 @@ QStringList Document::includedFiles() const void Document::addIncludeFile(const QString &fileName, unsigned line) { - _includes.append(Include(fileName, line)); + _includes.append(Include(QDir::cleanPath(fileName), line)); } void Document::appendMacro(const Macro ¯o) @@ -569,3 +570,8 @@ QStringList Snapshot::dependsOn(const QString &fileName) const return deps; } + +Document::Ptr Snapshot::value(const QString &fileName) const +{ + return QMap<QString, Document::Ptr>::value(QDir::cleanPath(fileName)); +} diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h index 596bee794b3..0f879b872d2 100644 --- a/src/libs/cplusplus/CppDocument.h +++ b/src/libs/cplusplus/CppDocument.h @@ -341,6 +341,7 @@ public: QStringList dependsOn(const QString &fileName) const; void insert(Document::Ptr doc); + Document::Ptr value(const QString &fileName) const; using _Base::insert; diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp index d6ecca8cbf9..b74e85995fc 100644 --- a/src/libs/cplusplus/FindUsages.cpp +++ b/src/libs/cplusplus/FindUsages.cpp @@ -121,8 +121,7 @@ void FindUsages::reportResult(unsigned tokenIndex) const int len = tk.f.length; if (_future) { - const QString path = QDir::toNativeSeparators(_doc->fileName()); - _future->reportResult(Usage(path, line, lineText, col, len)); + _future->reportResult(Usage(_doc->fileName(), line, lineText, col, len)); } _references.append(tokenIndex); diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 72677abf6e2..6d1c527bacd 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -110,7 +110,6 @@ static void find_helper(QFutureInterface<Usage> &future, Q_ASSERT(symbolId != 0); const QString sourceFile = QString::fromUtf8(symbol->fileName(), symbol->fileNameLength()); - QStringList files(sourceFile); if (symbol->isClass() || symbol->isForwardClassDeclaration()) { @@ -126,9 +125,7 @@ static void find_helper(QFutureInterface<Usage> &future, } else { files += snapshot.dependsOn(sourceFile); } - files.removeDuplicates(); - //qDebug() << "done in:" << tm.elapsed() << "number of files to parse:" << files.size(); future.setProgressRange(0, files.size()); @@ -232,7 +229,6 @@ void CppFindReferences::findAll_helper(Symbol *symbol) const QMap<QString, QString> wl = _modelManager->workingCopy(); Core::ProgressManager *progressManager = Core::ICore::instance()->progressManager(); - QFuture<Usage> result = QtConcurrent::run(&find_helper, wl, snapshot, symbol); m_watcher.setFuture(result); diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 5adc395870e..5cae6bdeaf3 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -532,7 +532,7 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type, return; QString contents = tryIncludeFile(fileName, type); - + fileName = QDir::cleanPath(fileName); if (m_currentDoc) { m_currentDoc->addIncludeFile(fileName, line); diff --git a/src/plugins/find/searchresulttreemodel.cpp b/src/plugins/find/searchresulttreemodel.cpp index b711e8c1105..267022bb437 100644 --- a/src/plugins/find/searchresulttreemodel.cpp +++ b/src/plugins/find/searchresulttreemodel.cpp @@ -243,7 +243,7 @@ QVariant SearchResultTreeModel::data(const SearchResultFile *file, int role) con break; case ItemDataRoles::FileNameRole: case Qt::ToolTipRole: - result = file->fileName(); + result = QDir::toNativeSeparators(file->fileName()); break; case ItemDataRoles::ResultLinesCountRole: result = file->childrenCount(); @@ -270,6 +270,10 @@ QVariant SearchResultTreeModel::headerData(int section, Qt::Orientation orientat void SearchResultTreeModel::appendResultFile(const QString &fileName) { +#ifdef Q_OS_WIN + if (fileName.contains(QLatin1Char('\\'))) + qWarning("SearchResultTreeModel::appendResultFile: File name with native separators added %s.\n", qPrintable(fileName)); +#endif m_lastAppendedResultFile = new SearchResultFile(fileName, m_rootItem); if (m_showReplaceUI) { |