summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-09-29 13:42:47 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2009-09-29 13:42:47 +0200
commit86e21bc255fdc883e3094e7abb32764d6ac8678c (patch)
tree7c58c9c7a4623d09870c393e0e2a7a09ef79fe94 /src
parent4bc4bd0f5d7cfdfd0fd519d671af02c33fa1c1c4 (diff)
downloadqt-creator-86e21bc255fdc883e3094e7abb32764d6ac8678c.tar.gz
Look at the working copy when searching for references.
Diffstat (limited to 'src')
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp27
-rw-r--r--src/plugins/cpptools/cppfindreferences.h2
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp2
3 files changed, 23 insertions, 8 deletions
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 66d9fbcc2f..355f2bf61a 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -322,6 +322,7 @@ CppFindReferences::~CppFindReferences()
}
static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future,
+ const QMap<QString, QString> wl,
Snapshot snapshot,
Symbol *symbol)
{
@@ -339,7 +340,6 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future,
future.setProgressRange(0, files.size());
- tm.start();
for (int i = 0; i < files.size(); ++i) {
const QString &fn = files.at(i);
future.setProgressValueAndText(i, QFileInfo(fn).fileName());
@@ -356,9 +356,20 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future,
if (! f.open(QFile::ReadOnly))
continue;
- const QString source = QTextStream(&f).readAll(); // ### FIXME
- const QByteArray preprocessedCode = snapshot.preprocessedCode(source, fn);
- Document::Ptr doc = snapshot.documentFromSource(preprocessedCode, fn);
+ QByteArray source;
+
+ if (wl.contains(fileName))
+ source = snapshot.preprocessedCode(wl.value(fileName), fileName);
+ else {
+ QFile file(fileName);
+ if (! file.open(QFile::ReadOnly))
+ continue;
+
+ const QString contents = QTextStream(&file).readAll(); // ### FIXME
+ source = snapshot.preprocessedCode(contents, fileName);
+ }
+
+ Document::Ptr doc = snapshot.documentFromSource(source, fileName);
doc->tokenize();
Control *control = doc->control();
@@ -369,17 +380,21 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future,
process(symbol, id, unit->ast());
}
}
+
future.setProgressValue(files.size());
}
-void CppFindReferences::findAll(const Snapshot &snapshot, Symbol *symbol)
+void CppFindReferences::findAll(Symbol *symbol)
{
_resultWindow->clearContents();
_resultWindow->popup(true);
+ const Snapshot snapshot = _modelManager->snapshot();
+ const QMap<QString, QString> wl = _modelManager->buildWorkingCopyList();
+
Core::ProgressManager *progressManager = Core::ICore::instance()->progressManager();
- QFuture<Core::Utils::FileSearchResult> result = QtConcurrent::run(&find_helper, snapshot, symbol);
+ QFuture<Core::Utils::FileSearchResult> result = QtConcurrent::run(&find_helper, wl, snapshot, symbol);
m_watcher.setFuture(result);
Core::FutureProgress *progress = progressManager->addTask(result, tr("Searching..."),
diff --git a/src/plugins/cpptools/cppfindreferences.h b/src/plugins/cpptools/cppfindreferences.h
index 65f48d3619..9b5ddfccb4 100644
--- a/src/plugins/cpptools/cppfindreferences.h
+++ b/src/plugins/cpptools/cppfindreferences.h
@@ -62,7 +62,7 @@ Q_SIGNALS:
void changed();
public:
- void findAll(const CPlusPlus::Snapshot &snapshot, CPlusPlus::Symbol *symbol);
+ void findAll(CPlusPlus::Symbol *symbol);
private Q_SLOTS:
void displayResult(int);
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 6a859d16cc..aa3d9777ee 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -742,7 +742,7 @@ void CppModelManager::removeEditorSupport(AbstractEditorSupport *editorSupport)
void CppModelManager::findReferences(CPlusPlus::Symbol *symbol)
{
if (symbol->identifier())
- m_findReferences->findAll(snapshot(), symbol);
+ m_findReferences->findAll(symbol);
}
QMap<QString, QString> CppModelManager::buildWorkingCopyList()