aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2009-11-09 13:53:28 +0100
committercon <qtc-committer@nokia.com>2009-11-09 18:42:49 +0100
commita1d9cac005e8bf23e922ca2183e248ec24073d41 (patch)
tree6d043581679131462e27cfe9f49c98923d632124
parentac9eea0dc1d1990eb2e6ee3fc60b6f6d1ca7744c (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.cpp10
-rw-r--r--src/libs/cplusplus/CppDocument.h1
-rw-r--r--src/libs/cplusplus/FindUsages.cpp3
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp4
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp2
-rw-r--r--src/plugins/find/searchresulttreemodel.cpp6
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 &macro)
@@ -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) {