diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolseditorsupport.cpp | 5 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolseditorsupport.h | 3 | ||||
-rw-r--r-- | src/plugins/designer/gotoslot_test.cpp | 24 |
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)); |