diff --git a/src/plugins/qmljseditor/qmlcodecompletion.cpp b/src/plugins/qmljseditor/qmlcodecompletion.cpp
index 199f5f69fa9da56288c4c14c8964c6c14b6df951..2fe7c2f5f8fb6f9786c80d723543e402b0a49b2e 100644
--- a/src/plugins/qmljseditor/qmlcodecompletion.cpp
+++ b/src/plugins/qmljseditor/qmlcodecompletion.cpp
@@ -855,7 +855,7 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
     else if (AST::UiObjectBinding *binding = AST::cast<AST::UiObjectBinding *>(parentMember))
         parentItemName = qualifiedNameId(binding->qualifiedTypeNameId);
 
-    Interpreter::ObjectValue *parentItem = newComponent(&interp, declaringItemName, userComponents);
+    Interpreter::ObjectValue *parentItem = newComponent(&interp, parentItemName, userComponents);
     if (! parentItem)
         parentItem = interp.newQmlObject(QLatin1String("Item"));
 
@@ -871,21 +871,13 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
                                                                         m_startPosition != editor->position())) {
         // It's a global completion.
         // Process the visible user defined components.
-        foreach (QmlJS::Document::Ptr doc, snapshot) {
-            const QFileInfo fileInfo(doc->fileName());
-
-            if (fileInfo.suffix() != QLatin1String("qml"))
-                continue;
-            else if (fileInfo.absolutePath() != currentFilePath) // ### FIXME includ `imported' components
-                continue;
-
-            const QString componentName = fileInfo.baseName();
-            if (! componentName.isEmpty() && componentName.at(0).isUpper()) {
-                TextEditor::CompletionItem item(this);
-                item.text = componentName;
-                item.icon = componentIcon;
-                m_completions.append(item);
-            }
+        QHashIterator<QString, Document::Ptr> componentIt(userComponents);
+        while (componentIt.hasNext()) {
+            componentIt.next();
+            TextEditor::CompletionItem item(this);
+            item.text = componentIt.key();
+            item.icon = componentIcon;
+            m_completions.append(item);
         }
 
         EnumerateProperties enumerateProperties;