From e5635e091ed4a0c24e4a06d75d443486d71795d5 Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Fri, 9 Oct 2009 11:24:24 +0200
Subject: [PATCH] Temporary fix to get completion working in more cases. The
 "real" fix will have to wait until the integration of the/a QML meta-type
 system.

---
 src/plugins/qmleditor/qmlcodecompletion.cpp | 7 +++++--
 src/plugins/qmleditor/qmllookupcontext.cpp  | 7 +++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qmleditor/qmlcodecompletion.cpp b/src/plugins/qmleditor/qmlcodecompletion.cpp
index e0e5dac2c05..7b6bf6a2956 100644
--- a/src/plugins/qmleditor/qmlcodecompletion.cpp
+++ b/src/plugins/qmleditor/qmlcodecompletion.cpp
@@ -78,9 +78,10 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
     if (!qmlDocument->program())
         qmlDocument = m_modelManager->snapshot().value(qmlDocument->fileName());
 
-    if (qmlDocument->program()) {
+    // FIXME: this completion strategy is not going to work when the document was never parsed correctly.
+    if (qmlDocument && qmlDocument->program()) {
          QmlJS::AST::UiProgram *program = qmlDocument->program();
-//        qDebug() << "*** program:" << program;
+//         qDebug() << "*** program:" << program;
  
          if (program) {
             QmlExpressionUnderCursor expressionUnderCursor;
@@ -90,7 +91,9 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 
             QmlLookupContext context(expressionUnderCursor.expressionScopes(), qmlDocument, m_modelManager->snapshot());
             QmlResolveExpression resolver(context);
+//            qDebug()<<"*** expression under cursor:"<<expressionUnderCursor.expressionNode();
             QList<QmlSymbol*> symbols = resolver.visibleSymbols(expressionUnderCursor.expressionNode());
+//            qDebug()<<"***"<<symbols.size()<<"visible symbols";
 
             foreach (QmlSymbol *symbol, symbols) {
                 QString word;
diff --git a/src/plugins/qmleditor/qmllookupcontext.cpp b/src/plugins/qmleditor/qmllookupcontext.cpp
index 5cd065bff66..5bbc044899b 100644
--- a/src/plugins/qmleditor/qmllookupcontext.cpp
+++ b/src/plugins/qmleditor/qmllookupcontext.cpp
@@ -94,6 +94,8 @@ QmlSymbol *QmlLookupContext::resolveType(const QString &name, const QString &fil
         if (!import)
             continue;
 
+        // TODO: handle Qt imports
+
         if (!(import->fileName))
             continue;
 
@@ -107,6 +109,7 @@ QmlSymbol *QmlLookupContext::resolveType(const QString &name, const QString &fil
         }
     }
 
+    // TODO: handle Qt imports, hack for now:
     return resolveBuildinType(name);
 }
 
@@ -297,5 +300,9 @@ QList<QmlSymbol*> QmlLookupContext::visibleTypes()
         }
     }
 
+    // TODO: handle Qt imports, hack for now:
+    foreach (const QString &name, qmlMetaTypes)
+        result.append(resolveBuildinType(name));
+
     return result;
 }
-- 
GitLab