From 5ae67214a14937f7ba6b622cea5489c6c19c327c Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Thu, 1 Apr 2010 15:47:52 +0200
Subject: [PATCH] QmlJSEditor: Don't trigger a reparse when dependencies
 change.

A semantic rehighlight suffices. This should avoid some parsing cycles
introduced earlier.

Reviewed-by: Roberto Raggi
---
 src/plugins/qmljseditor/qmljseditor.cpp | 7 ++++++-
 src/plugins/qmljseditor/qmljseditor.h   | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 1212a7be59b..fd4a553e547 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -635,6 +635,11 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) :
     m_updateUsesTimer->setSingleShot(true);
     connect(m_updateUsesTimer, SIGNAL(timeout()), this, SLOT(updateUsesNow()));
 
+    m_semanticRehighlightTimer = new QTimer(this);
+    m_semanticRehighlightTimer->setInterval(UPDATE_DOCUMENT_DEFAULT_INTERVAL);
+    m_semanticRehighlightTimer->setSingleShot(true);
+    connect(m_semanticRehighlightTimer, SIGNAL(timeout()), this, SLOT(semanticRehighlight()));
+
     connect(this, SIGNAL(textChanged()), this, SLOT(updateDocument()));
     connect(this, SIGNAL(textChanged()), this, SLOT(updateUses()));
 
@@ -753,7 +758,7 @@ void QmlJSTextEditor::onDocumentUpdated(QmlJS::Document::Ptr doc)
             || doc->documentRevision() != document()->revision()) {
         // didn't get the currently open, or an up to date document.
         // trigger a semantic rehighlight anyway, after a time
-        updateDocument();
+        m_semanticRehighlightTimer->start();
         return;
     }
 
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index 179934c9b48..5aefcab2690 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -260,6 +260,7 @@ private:
 
     QTimer *m_updateDocumentTimer;
     QTimer *m_updateUsesTimer;
+    QTimer *m_semanticRehighlightTimer;
     QComboBox *m_methodCombo;
     ModelManagerInterface *m_modelManager;
     QTextCharFormat m_occurrencesFormat;
-- 
GitLab