diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp index 83f1becd5a307d30d1a26fe40aebb49fdf17877f..f14b3174cd67b3d761ec55769ca2864c64a454f6 100644 --- a/src/plugins/cpptools/cpptoolseditorsupport.cpp +++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp @@ -49,6 +49,8 @@ CppEditorSupport::CppEditorSupport(CppModelManager *modelManager) _modelManager(modelManager), _updateDocumentInterval(UPDATE_DOCUMENT_DEFAULT_INTERVAL) { + _revision = 0; + _updateDocumentTimer = new QTimer(this); _updateDocumentTimer->setSingleShot(true); _updateDocumentTimer->setInterval(_updateDocumentInterval); @@ -102,6 +104,8 @@ void CppEditorSupport::setUpdateDocumentInterval(int updateDocumentInterval) void CppEditorSupport::updateDocument() { + _revision = editorRevision(); + if (TextEditor::BaseTextEditor *edit = qobject_cast<TextEditor::BaseTextEditor*>(_textEditor->widget())) { const QList<QTextEdit::ExtraSelection> selections = edit->extraSelections(TextEditor::BaseTextEditor::CodeWarningsSelection); @@ -114,7 +118,7 @@ void CppEditorSupport::updateDocument() void CppEditorSupport::updateDocumentNow() { - if (_documentParser.isRunning()) { + if (_documentParser.isRunning() || _revision != editorRevision()) { _updateDocumentTimer->start(_updateDocumentInterval); } else { _updateDocumentTimer->stop(); diff --git a/src/plugins/cpptools/cpptoolseditorsupport.h b/src/plugins/cpptools/cpptoolseditorsupport.h index 4fd289a5f1c86fdf81a37f3598b3a9e44fa38ba2..882a9ac9aa95fd11f921daf8654c3829f80d497e 100644 --- a/src/plugins/cpptools/cpptoolseditorsupport.h +++ b/src/plugins/cpptools/cpptoolseditorsupport.h @@ -88,6 +88,7 @@ private: int _updateDocumentInterval; QFuture<void> _documentParser; QString _cachedContents; + unsigned _revision; }; } // namespace Internal