diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp index 8fac6e91ec9..9db93925a34 100644 --- a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp +++ b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp @@ -224,12 +224,16 @@ public: protected: void accept(Node *ast) { + if (m_futureInterface.isCanceled()) + return; if (ast) ast->accept(this); } void scopedAccept(Node *ast, Node *child) { + if (m_futureInterface.isCanceled()) + return; m_scopeBuilder.push(ast); accept(child); m_scopeBuilder.pop(); @@ -553,6 +557,7 @@ SemanticHighlighter::SemanticHighlighter(QmlJSEditorDocument *document) this, &SemanticHighlighter::applyResults); connect(&m_watcher, &QFutureWatcherBase::finished, this, &SemanticHighlighter::finished); + m_futureSynchronizer.setCancelOnWait(true); } void SemanticHighlighter::rerun(const QmlJSTools::SemanticInfo &semanticInfo)