From 645cfb59ba156fd3cdfd5b3a64f9f61b7d6ff250 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Wed, 24 Mar 2010 15:53:39 +0100 Subject: [PATCH] Ignore outdated parsing requests. --- src/plugins/cpptools/cpptoolseditorsupport.cpp | 6 +++++- src/plugins/cpptools/cpptoolseditorsupport.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp index 83f1becd5a3..f14b3174cd6 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 4fd289a5f1c..882a9ac9aa9 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 -- GitLab