aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmljseditor
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@digia.com>2014-01-29 13:53:08 +0100
committerEike Ziller <eike.ziller@digia.com>2014-01-30 14:39:00 +0100
commite2972e8a824f4f3f7dd9ef0a09176c40891fba07 (patch)
tree6c358b01825a8b45b120a50e92d6d8a75e74735c /src/plugins/qmljseditor
parent909d26b86041f6e3849282e1a84d31e378ff0892 (diff)
QmlJSEditor: Simplify usages highlighting
There is no need to fire a timer over and over again if semantic info is not up to date. Instead, update usages whenever cursor position changes and semantic info is up to date, and whenever semantic info is updated. Change-Id: If2d8fe2a0211b9d659bea5c747704380a64cc1ca Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src/plugins/qmljseditor')
-rw-r--r--src/plugins/qmljseditor/qmljseditor.cpp22
-rw-r--r--src/plugins/qmljseditor/qmljseditor.h3
2 files changed, 6 insertions, 19 deletions
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index ada4c43f7a..1e665fddda 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -130,10 +130,8 @@ void QmlJSTextEditorWidget::ctor()
m_updateUsesTimer = new QTimer(this);
m_updateUsesTimer->setInterval(UPDATE_USES_DEFAULT_INTERVAL);
m_updateUsesTimer->setSingleShot(true);
- connect(m_updateUsesTimer, SIGNAL(timeout()), this, SLOT(updateUsesNow()));
-
- connect(this, SIGNAL(textChanged()), this, SLOT(updateUses()));
- connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(updateUses()));
+ connect(m_updateUsesTimer, SIGNAL(timeout()), this, SLOT(updateUses()));
+ connect(this, SIGNAL(cursorPositionChanged()), m_updateUsesTimer, SLOT(start()));
m_updateOutlineTimer = new QTimer(this);
m_updateOutlineTimer->setInterval(UPDATE_OUTLINE_INTERVAL);
@@ -424,20 +422,8 @@ void QmlJSTextEditorWidget::showTextMarker()
void QmlJSTextEditorWidget::updateUses()
{
- if (m_semanticHighlighter->startRevision() != editorRevision())
- m_semanticHighlighter->cancel();
- m_updateUsesTimer->start();
-}
-
-
-void QmlJSTextEditorWidget::updateUsesNow()
-{
- if (m_qmlJsEditorDocument->isSemanticInfoOutdated()) {
- updateUses();
+ if (m_qmlJsEditorDocument->isSemanticInfoOutdated()) // will be updated when info is updated
return;
- }
-
- m_updateUsesTimer->stop();
QList<QTextEdit::ExtraSelection> selections;
foreach (const AST::SourceLocation &loc,
@@ -886,6 +872,8 @@ void QmlJSTextEditorWidget::semanticInfoUpdated(const SemanticInfo &semanticInfo
}
}
+ updateUses();
+
// update outline
m_updateOutlineTimer->start();
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index 1bb21ad2fb..b75f742137 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -139,7 +139,6 @@ private slots:
void showTextMarker();
void updateUses();
- void updateUsesNow();
void semanticInfoUpdated(const QmlJSTools::SemanticInfo &semanticInfo);
void onCursorPositionChanged();
@@ -174,7 +173,7 @@ private:
bool hideContextPane();
Internal::QmlJSEditorDocument *m_qmlJsEditorDocument;
- QTimer *m_updateUsesTimer;
+ QTimer *m_updateUsesTimer; // to wait for multiple text cursor position changes
QTimer *m_updateOutlineTimer;
QTimer *m_updateOutlineIndexTimer;
QTimer *m_cursorPositionTimer;