From 1cbee8cd71b43c1d13acbb31c8619c107e0d8e8f Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Wed, 3 Feb 2010 11:11:31 +0100
Subject: [PATCH] Fixed EnumerateProperties to enumerate properties of the base
 object.

Done with: ckamm
---
 src/plugins/qmljseditor/qmlcodecompletion.cpp | 26 ++++++++++++-------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/plugins/qmljseditor/qmlcodecompletion.cpp b/src/plugins/qmljseditor/qmlcodecompletion.cpp
index 277db9d9b3a..6346b372aae 100644
--- a/src/plugins/qmljseditor/qmlcodecompletion.cpp
+++ b/src/plugins/qmljseditor/qmlcodecompletion.cpp
@@ -143,16 +143,24 @@ public:
         _globalCompletion = globalCompletion;
     }
 
-    QHash<QString, const Interpreter::Value *> operator ()(bool lookAtScope = false)
+    QHash<QString, const Interpreter::Value *> operator ()(const Interpreter::Value *value)
     {
         _processed.clear();
         _properties.clear();
-        if (!lookAtScope) {
-            enumerateProperties(_link->scopeChain().first());
-        } else {
-            foreach (const Interpreter::ObjectValue *scope, _link->scopeChain())
-                enumerateProperties(scope);
-        }
+
+        enumerateProperties(value);
+
+        return _properties;
+    }
+
+    QHash<QString, const Interpreter::Value *> operator ()()
+    {
+        _processed.clear();
+        _properties.clear();
+
+        foreach (const Interpreter::ObjectValue *scope, _link->scopeChain())
+            enumerateProperties(scope);
+
         return _properties;
     }
 
@@ -650,7 +658,7 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
         // It's a global completion.
         EnumerateProperties enumerateProperties(&link);
         enumerateProperties.setGlobalCompletion(true);
-        QHashIterator<QString, const Interpreter::Value *> it(enumerateProperties(/* lookAtScope = */ true));
+        QHashIterator<QString, const Interpreter::Value *> it(enumerateProperties());
         while (it.hasNext()) {
             it.next();
 
@@ -679,7 +687,7 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 
             if (value && completionOperator == QLatin1Char('.')) { // member completion
                 EnumerateProperties enumerateProperties(&link);
-                QHashIterator<QString, const Interpreter::Value *> it(enumerateProperties());
+                QHashIterator<QString, const Interpreter::Value *> it(enumerateProperties(value));
                 while (it.hasNext()) {
                     it.next();
 
-- 
GitLab