From 0e93bf3b96594d64b0a7d04f63eafac265892691 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Tue, 26 Jan 2010 12:36:04 +0100
Subject: [PATCH] Activate the global completion when the the character at the
 left of the text cursor is a delimiter.

---
 src/plugins/qmljseditor/qmlcodecompletion.cpp | 22 +++++++++++++++++--
 src/plugins/qmljseditor/qmlcodecompletion.h   |  2 ++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qmljseditor/qmlcodecompletion.cpp b/src/plugins/qmljseditor/qmlcodecompletion.cpp
index 1c945682574..56a62c98c95 100644
--- a/src/plugins/qmljseditor/qmlcodecompletion.cpp
+++ b/src/plugins/qmljseditor/qmlcodecompletion.cpp
@@ -762,6 +762,24 @@ bool QmlCodeCompletion::isImported(Document::Ptr doc, const QString &currentFile
     return false;
 }
 
+bool QmlCodeCompletion::isDelimiter(const QChar &ch) const
+{
+    switch (ch.unicode()) {
+    case '{':
+    case '}':
+    case '[':
+    case ']':
+    case '?':
+    case ':':
+    case ';':
+    case ',':
+        return true;
+
+    default:
+        return false;
+    }
+}
+
 int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 {
     m_editor = editor;
@@ -913,8 +931,8 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
     if (m_startPosition > 0)
         completionOperator = editor->characterAt(m_startPosition - 1);
 
-    if (completionOperator.isSpace() || completionOperator.isNull() || (completionOperator == QLatin1Char('(') &&
-                                                                        m_startPosition != editor->position())) {
+    if (completionOperator.isSpace() || completionOperator.isNull() || isDelimiter(completionOperator) ||
+            (completionOperator == QLatin1Char('(') && m_startPosition != editor->position())) {
         // It's a global completion.
         // Process the visible user defined components.
         QHashIterator<QString, Document::Ptr> componentIt(userComponents);
diff --git a/src/plugins/qmljseditor/qmlcodecompletion.h b/src/plugins/qmljseditor/qmlcodecompletion.h
index b56e246b030..b329f8131b0 100644
--- a/src/plugins/qmljseditor/qmlcodecompletion.h
+++ b/src/plugins/qmljseditor/qmlcodecompletion.h
@@ -75,6 +75,8 @@ private:
     void updateSnippets();
     bool isImported(QmlJS::Document::Ptr doc, const QString &currentFilePath) const;
 
+    bool isDelimiter(const QChar &ch) const;
+
     QmlModelManagerInterface *m_modelManager;
     TextEditor::ITextEditable *m_editor;
     int m_startPosition;
-- 
GitLab