summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp2
-rw-r--r--src/plugins/cpptools/cpptoolseditorsupport.cpp5
-rw-r--r--src/plugins/cpptools/cpptoolseditorsupport.h3
-rw-r--r--src/plugins/designer/gotoslot_test.cpp24
4 files changed, 27 insertions, 7 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 533b803808..4d5e8a1d9d 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -461,7 +461,7 @@ CppEditorSupport *CppModelManager::cppEditorSupport(TextEditor::BaseTextEditor *
QMutexLocker locker(&m_cppEditorSupportsMutex);
CppEditorSupport *editorSupport = m_cppEditorSupports.value(textEditor, 0);
- if (!editorSupport) {
+ if (!editorSupport && isCppEditor(textEditor)) {
editorSupport = new CppEditorSupport(this, textEditor);
m_cppEditorSupports.insert(textEditor, editorSupport);
}
diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp
index e9ec1d23a0..c720b3b73a 100644
--- a/src/plugins/cpptools/cpptoolseditorsupport.cpp
+++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp
@@ -308,6 +308,11 @@ void CppEditorSupport::updateDocumentNow()
}
}
+bool CppEditorSupport::isUpdatingDocument()
+{
+ return m_updateDocumentTimer->isActive() || m_documentParser.isRunning();
+}
+
void CppEditorSupport::onDocumentUpdated(Document::Ptr doc)
{
if (doc.isNull())
diff --git a/src/plugins/cpptools/cpptoolseditorsupport.h b/src/plugins/cpptools/cpptoolseditorsupport.h
index 02beb1d295..84674e3e51 100644
--- a/src/plugins/cpptools/cpptoolseditorsupport.h
+++ b/src/plugins/cpptools/cpptoolseditorsupport.h
@@ -125,6 +125,9 @@ public:
QSharedPointer<SnapshotUpdater> snapshotUpdater();
+ /// Checks whether the document is (re)parsed or about to be (re)parsed.
+ bool isUpdatingDocument();
+
signals:
void documentUpdated();
void diagnosticsChanged();
diff --git a/src/plugins/designer/gotoslot_test.cpp b/src/plugins/designer/gotoslot_test.cpp
index ef9ed56828..f2789aa502 100644
--- a/src/plugins/designer/gotoslot_test.cpp
+++ b/src/plugins/designer/gotoslot_test.cpp
@@ -37,6 +37,7 @@
#include <coreplugin/testdatadir.h>
#include <coreplugin/editormanager/editormanager.h>
#include <cpptools/cppmodelmanager.h>
+#include <cpptools/cpptoolseditorsupport.h>
#include <cplusplus/CppDocument.h>
#include <cplusplus/Overview.h>
@@ -91,8 +92,13 @@ public:
const QString functionName = QLatin1String("on_pushButton_clicked");
const QString qualifiedFunctionName = QLatin1String("Form::") + functionName;
- foreach (const QString &file, files)
- QVERIFY(EditorManager::openEditor(file));
+ QList<TextEditor::BaseTextEditor *> editors;
+ foreach (const QString &file, files) {
+ IEditor *editor = EditorManager::openEditor(file);
+ TextEditor::BaseTextEditor *e = qobject_cast<TextEditor::BaseTextEditor *>(editor);
+ QVERIFY(e);
+ editors << e;
+ }
QCOMPARE(EditorManager::documentModel()->openedDocuments().size(), files.size());
while (!m_modelManager->snapshot().contains(cppFile)
|| !m_modelManager->snapshot().contains(hFile)) {
@@ -114,15 +120,21 @@ public:
QVERIFY(integration);
integration->emitNavigateToSlot(QLatin1String("pushButton"), QLatin1String("clicked()"),
QStringList());
- QApplication::processEvents();
-
- // Checks after
- m_modelManager->updateSourceFiles(QStringList() << cppFile << hFile).waitForFinished();
QCOMPARE(EditorManager::currentDocument()->filePath(), cppFile);
QVERIFY(EditorManager::currentDocument()->isModified());
+ // Wait for updated documents
+ foreach (TextEditor::BaseTextEditor *editor, editors) {
+ if (CppEditorSupport *editorSupport = m_modelManager->cppEditorSupport(editor)) {
+ while (editorSupport->isUpdatingDocument())
+ QApplication::processEvents();
+ }
+ }
+
+ // Checks after
Document::Ptr cppDocumentAfter = m_modelManager->snapshot().document(cppFile);
+
QCOMPARE(cppDocumentAfter->globalSymbolCount(), 3U);
QVERIFY(containsSymbol(cppDocumentAfter->globalNamespace(), qualifiedFunctionName));