diff --git a/src/plugins/qmljsinspector/qmljsdelta.cpp b/src/plugins/qmljsinspector/qmljsdelta.cpp
index aa9d86827fb52f34312499f78848f96e4f306432..40546839b300880cc68f347568970dd56e4ddb90 100644
--- a/src/plugins/qmljsinspector/qmljsdelta.cpp
+++ b/src/plugins/qmljsinspector/qmljsdelta.cpp
@@ -70,22 +70,32 @@ void BuildParentHash::postVisit(Node* ast)
     }
 }
 
-QString label(UiObjectMember *member, Document::Ptr doc)
+static QString label(UiQualifiedId *id)
+{
+    QString str;
+    for (; id ; id = id->next) {
+        if (!id->name)
+            return QString();
+        if (!str.isEmpty())
+            str += QLatin1Char('.');
+        str += id->name->asString();
+    }
+    return str;
+}
+
+static QString label(UiObjectMember *member, Document::Ptr doc)
 {
     QString str;
     if(!member)
         return str;
 
     if (UiObjectDefinition* foo = cast<UiObjectDefinition *>(member)) {
-        quint32 start = foo->firstSourceLocation().begin();
-        quint32 end = foo->initializer->lbraceToken.begin();
-        str = doc->source().mid(start, end-start);
+        str = label(foo->qualifiedTypeNameId);
     } else if(UiObjectBinding *foo = cast<UiObjectBinding *>(member)) {
-        quint32 start = foo->firstSourceLocation().begin();
-        quint32 end = foo->initializer->lbraceToken.begin();
-        str = doc->source().mid(start, end-start);
-    } else if(cast<UiArrayBinding *>(member)) {
-        //TODO
+        str = label(foo->qualifiedId) + QLatin1Char(' ') + label(foo->qualifiedTypeNameId);
+    } else if(UiArrayBinding *foo = cast<UiArrayBinding *>(member)) {
+        str = label(foo->qualifiedId) + QLatin1String("[]");
+    } else if(UiScriptBinding *foo = cast<UiScriptBinding *>(member)) {
     } else {
         quint32 start = member->firstSourceLocation().begin();
         quint32 end = member->lastSourceLocation().end();
@@ -133,7 +143,7 @@ struct Map {
     }
 };
 
-QList<UiObjectMember *> children(UiObjectMember *ast)
+static QList<UiObjectMember *> children(UiObjectMember *ast)
 {
     QList<UiObjectMember *> ret;
     if (UiObjectDefinition* foo = cast<UiObjectDefinition *>(ast)) {
@@ -142,6 +152,18 @@ QList<UiObjectMember *> children(UiObjectMember *ast)
             ret.append(list->member);
             list = list->next;
         }
+    } else if(UiObjectBinding *foo = cast<UiObjectBinding *>(ast)) {
+        UiObjectMemberList* list = foo->initializer->members;
+        while (list) {
+            ret.append(list->member);
+            list = list->next;
+        }
+    } else if(UiArrayBinding *foo = cast<UiArrayBinding *>(ast)) {
+        UiArrayMemberList* list = foo->members;
+        while (list) {
+            ret.append(list->member);
+            list = list->next;
+        }
     }
     return ret;
 }
@@ -277,14 +299,17 @@ Delta::DebugIdMap Delta::operator()(const Document::Ptr &doc1, const Document::P
         if (debugIds.contains(x)) {
             newDebuggIds[y] = debugIds[x];
 
+#if 1
             UiObjectMember *object = y;
             UiObjectMember *previousObject = x;
 
             for (UiObjectMemberList *objectMemberIt = objectMembers(object); objectMemberIt; objectMemberIt = objectMemberIt->next) {
                 if (UiScriptBinding *script = cast<UiScriptBinding *>(objectMemberIt->member)) {
+                    bool found = false;
                     for (UiObjectMemberList *previousObjectMemberIt = Delta::objectMembers(previousObject); previousObjectMemberIt; previousObjectMemberIt = previousObjectMemberIt->next) {
                         if (UiScriptBinding *previousScript = cast<UiScriptBinding *>(previousObjectMemberIt->member)) {
                             if (compare(script->qualifiedId, previousScript->qualifiedId)) {
+                                found = true;
                                 const QString scriptCode = _scriptCode(script, doc2);
                                 const QString previousScriptCode = _scriptCode(previousScript, doc1);
 
@@ -298,6 +323,14 @@ Delta::DebugIdMap Delta::operator()(const Document::Ptr &doc1, const Document::P
                             }
                         }
                     }
+                    if (!found) {
+                        const QString scriptCode = _scriptCode(script, doc2);
+                        const QString property = _propertyName(script->qualifiedId);
+                        foreach (const QDeclarativeDebugObjectReference &ref, debugIds[x]) {
+                            if (ref.debugId() != -1)
+                                updateScriptBinding(ref, script, property, scriptCode);
+                        }
+                    }
                 } else if (UiSourceElement *uiSource = cast<UiSourceElement*>(objectMemberIt->member)) {
                     for (UiObjectMemberList *previousObjectMemberIt = objectMembers(previousObject);
                     previousObjectMemberIt; previousObjectMemberIt = previousObjectMemberIt->next)
@@ -320,6 +353,7 @@ Delta::DebugIdMap Delta::operator()(const Document::Ptr &doc1, const Document::P
                     }
                 }
             }
+#endif
         }
 
 //--8<--------------------------------------------------------------------------------------------------