From d7747fe849e8a012f3c64fd85f038b90cdb6a0e9 Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Mon, 7 Jun 2010 17:37:21 +0200
Subject: [PATCH] QmlJS: Trigger another completion if a completion ends with a
 dot.

---
 src/plugins/qmljseditor/qmljscodecompletion.cpp | 10 ++++++++--
 src/plugins/qmljseditor/qmljscodecompletion.h   |  1 +
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qmljseditor/qmljscodecompletion.cpp b/src/plugins/qmljseditor/qmljscodecompletion.cpp
index 7981fa1ed8f..3fd2d3db4ce 100644
--- a/src/plugins/qmljseditor/qmljscodecompletion.cpp
+++ b/src/plugins/qmljseditor/qmljscodecompletion.cpp
@@ -479,7 +479,8 @@ CodeCompletion::CodeCompletion(ModelManagerInterface *modelManager, QObject *par
     : TextEditor::ICompletionCollector(parent),
       m_modelManager(modelManager),
       m_editor(0),
-      m_startPosition(0)
+      m_startPosition(0),
+      m_restartCompletion(false)
 {
     Q_ASSERT(modelManager);
 }
@@ -494,7 +495,7 @@ int CodeCompletion::startPosition() const
 { return m_startPosition; }
 
 bool CodeCompletion::shouldRestartCompletion()
-{ return false; }
+{ return m_restartCompletion; }
 
 bool CodeCompletion::supportsEditor(TextEditor::ITextEditable *editor)
 {
@@ -649,6 +650,8 @@ void CodeCompletion::addCompletionsPropertyLhs(
 
 int CodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 {
+    m_restartCompletion = false;
+
     m_editor = editor;
 
     QmlJSTextEditor *edit = qobject_cast<QmlJSTextEditor *>(m_editor->widget());
@@ -882,6 +885,9 @@ void CodeCompletion::complete(const TextEditor::CompletionItem &item)
     const int length = m_editor->position() - m_startPosition;
     m_editor->setCurPos(m_startPosition);
     m_editor->replace(length, toInsert);
+
+    if (toInsert.endsWith(QLatin1Char('.')))
+        m_restartCompletion = true;
 }
 
 bool CodeCompletion::partiallyComplete(const QList<TextEditor::CompletionItem> &completionItems)
diff --git a/src/plugins/qmljseditor/qmljscodecompletion.h b/src/plugins/qmljseditor/qmljscodecompletion.h
index 6df5763be0c..3b2ae62992a 100644
--- a/src/plugins/qmljseditor/qmljscodecompletion.h
+++ b/src/plugins/qmljseditor/qmljscodecompletion.h
@@ -96,6 +96,7 @@ private:
     QList<TextEditor::CompletionItem> m_snippets;
     QDateTime m_snippetFileLastModified;
     QPointer<FunctionArgumentWidget> m_functionArgumentWidget;
+    bool m_restartCompletion;
 };
 
 
-- 
GitLab