diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index b39eec3c4270d0e09755bd88fe0996c37bd5fb2f..5ec720ff10de4cd103841806509855abc43477d3 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -1015,6 +1015,8 @@ void QmlJSTextEditorWidget::showTextMarker() void QmlJSTextEditorWidget::updateUses() { + if (m_semanticHighlighter->startRevision() != editorRevision()) + m_semanticHighlighter->cancel(); m_updateUsesTimer->start(); } diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp index c45fe9d514b25694b1986cfcdfb46e2a61bb1c68..dab142f85c83b6c1762a0400002d5bd07bda5968 100644 --- a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp +++ b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp @@ -386,6 +386,11 @@ void SemanticHighlighter::rerun(const ScopeChain &scopeChain) m_watcher.setFuture(f); } +void SemanticHighlighter::cancel() +{ + m_watcher.cancel(); +} + void SemanticHighlighter::applyResults(int from, int to) { if (m_watcher.isCanceled()) @@ -432,3 +437,7 @@ void SemanticHighlighter::updateFontSettings(const TextEditor::FontSettings &fon m_formats[LocalStateNameType] = fontSettings.toTextCharFormat(QLatin1String(TextEditor::Constants::C_QML_STATE_NAME)); } +int SemanticHighlighter::startRevision() const +{ + return m_startRevision; +} diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.h b/src/plugins/qmljseditor/qmljssemantichighlighter.h index be5d7a175f0f9c6d222c1dab43e2d7470e28fdb9..18ee0306575caf3056b27bb752b67e926a4d36c8 100644 --- a/src/plugins/qmljseditor/qmljssemantichighlighter.h +++ b/src/plugins/qmljseditor/qmljssemantichighlighter.h @@ -77,6 +77,9 @@ public: SemanticHighlighter(QmlJSTextEditorWidget *editor); void rerun(const QmlJS::ScopeChain &scopeChain); + void cancel(); + + int startRevision() const; void updateFontSettings(const TextEditor::FontSettings &fontSettings);