diff --git a/src/libs/qmljs/qmljsdelta.cpp b/src/libs/qmljs/qmljsdelta.cpp
index 563f4494f2058ec49f21d0dc157ff2a409e413df..4cadf2f33440c5bf5a00008bf92d74acbd82b5c6 100644
--- a/src/libs/qmljs/qmljsdelta.cpp
+++ b/src/libs/qmljs/qmljsdelta.cpp
@@ -310,7 +310,7 @@ static UiObjectMemberList *objectMembers(UiObjectMember *object)
 }
 
 
-static QHash<QString, UiObjectMember*> extractProperties(UiObjectDefinition *object)
+static QHash<QString, UiObjectMember*> extractProperties(UiObjectMember *object)
 {
     QHash<QString, UiObjectMember*> result;
     for (UiObjectMemberList *objectMemberIt = objectMembers(object); objectMemberIt; objectMemberIt = objectMemberIt->next) {
@@ -371,8 +371,8 @@ void Delta::insert(UiObjectMember *member, UiObjectMember *parentMember, const Q
 }
 
 
-void Delta::update(UiObjectDefinition* oldObject, const QmlJS::Document::Ptr& oldDoc,
-                   UiObjectDefinition* newObject, const QmlJS::Document::Ptr& newDoc,
+void Delta::update(UiObjectMember* oldObject, const QmlJS::Document::Ptr& oldDoc,
+                   UiObjectMember* newObject, const QmlJS::Document::Ptr& newDoc,
                    const QList<DebugId>& debugReferences)
 {
     Q_ASSERT (oldObject && newObject);
@@ -462,7 +462,7 @@ Delta::DebugIdMap Delta::operator()(const Document::Ptr &doc1, const Document::P
         UiObjectMember *y = todo.takeFirst();
         todo += children(y);
 
-        if (!cast<UiObjectDefinition *>(y))
+        if (!cast<UiObjectDefinition *>(y) && !cast<UiObjectBinding *>(y))
             continue;
 
         if (!M.way2.contains(y)) {
@@ -474,12 +474,12 @@ Delta::DebugIdMap Delta::operator()(const Document::Ptr &doc1, const Document::P
             continue;
         }
         UiObjectMember *x = M.way2[y];
-        Q_ASSERT(cast<UiObjectDefinition *>(x));
+        Q_ASSERT(cast<UiObjectDefinition *>(x) || cast<UiObjectBinding *>(x) );
 
         if (debugIds.contains(x)) {
             QList<DebugId> ids = debugIds[x];
             newDebuggIds[y] = ids;
-            update(cast<UiObjectDefinition *>(x), doc1, cast<UiObjectDefinition *>(y), doc2, ids);
+            update(x, doc1, y, doc2, ids);
         }
         //qDebug() << "Delta::operator():  match "<< label(x, doc1) << "with parent " << label(parents1.parent.value(x), doc1)
         //     << " to "<< label(y, doc2) << "with parent " << label(parents2.parent.value(y), doc2);
@@ -527,10 +527,10 @@ void Delta::reparentObject(int, int)
 {}
 void Delta::resetBindingForObject(int, const QString &)
 {}
-void Delta::updateMethodBody(DebugId, UiObjectDefinition *, UiScriptBinding *, const QString &, const QString &)
+void Delta::updateMethodBody(DebugId, UiObjectMember *, UiScriptBinding *, const QString &, const QString &)
 {}
 
-void Delta::updateScriptBinding(DebugId, UiObjectDefinition *, UiScriptBinding *, const QString &, const QString &)
+void Delta::updateScriptBinding(DebugId, UiObjectMember *, UiScriptBinding *, const QString &, const QString &)
 {}
 
 } //namespace QmlJs
diff --git a/src/libs/qmljs/qmljsdelta.h b/src/libs/qmljs/qmljsdelta.h
index 02d597b7bd3fab413efb96f84e0043d9b9f0e0e6..d6c6660b0eadfe46ed6ba70c9e18a7e308b62aa5 100644
--- a/src/libs/qmljs/qmljsdelta.h
+++ b/src/libs/qmljs/qmljsdelta.h
@@ -50,20 +50,20 @@ public:
 private:
     void insert(AST::UiObjectMember *member, AST::UiObjectMember *parentMember,
                 const QList<DebugId> &debugReferences, const Document::Ptr &doc);
-    void update(AST::UiObjectDefinition* oldObject, const QmlJS::Document::Ptr& oldDoc,
-                AST::UiObjectDefinition* newObject, const QmlJS::Document::Ptr& newDoc,
+    void update(AST::UiObjectMember* oldObject, const QmlJS::Document::Ptr& oldDoc,
+                AST::UiObjectMember* newObject, const QmlJS::Document::Ptr& newDoc,
                 const QList<DebugId>& debugReferences);
     void remove(const QList<DebugId> &debugReferences);
     void reparent(const QList <DebugId> &member, const QList<DebugId> &newParent);
 
 protected:
     virtual void updateScriptBinding(DebugId objectReference,
-                             AST::UiObjectDefinition *parentObject,
+                             AST::UiObjectMember *parentObject,
                              AST::UiScriptBinding *scriptBinding,
                              const QString &propertyName,
                              const QString &scriptCode);
     virtual void updateMethodBody(DebugId objectReference,
-                            AST::UiObjectDefinition *parentObject,
+                            AST::UiObjectMember *parentObject,
                             AST::UiScriptBinding *scriptBinding,
                             const QString &methodName,
                             const QString &methodBody);
diff --git a/src/plugins/qmljsinspector/qmljslivetextpreview.cpp b/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
index e4f0dd496b5390405413e2b6474d6c17b9ad723f..d4ab06db30522d7e92c5884459c8d904dcc01f39 100644
--- a/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
+++ b/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
@@ -463,7 +463,7 @@ private:
 
 protected:
     virtual void updateMethodBody(DebugId debugId,
-                                  UiObjectDefinition *parentDefinition, UiScriptBinding* scriptBinding,
+                                  UiObjectMember *parentDefinition, UiScriptBinding* scriptBinding,
                                   const QString& methodName, const QString& methodBody)
     {
         Q_UNUSED(scriptBinding);
@@ -473,7 +473,7 @@ protected:
     }
 
     virtual void updateScriptBinding(DebugId debugId,
-                                     UiObjectDefinition *parentDefinition, UiScriptBinding* scriptBinding,
+                                     UiObjectMember *parentDefinition, UiScriptBinding* scriptBinding,
                                      const QString& propertyName, const QString& scriptCode)
     {
         if (unsyncronizableChanges == QmlJSLiveTextPreview::NoUnsyncronizableChanges) {
@@ -520,9 +520,11 @@ protected:
         m_clientProxy->reparentQmlObject(debugId, newParent);
     }
 
-    void checkUnsyncronizableElementChanges(UiObjectDefinition *parentDefinition)
+    void checkUnsyncronizableElementChanges(UiObjectMember *parent)
     {
-        if (unsyncronizableChanges == QmlJSLiveTextPreview::NoUnsyncronizableChanges) {
+        UiObjectDefinition *parentDefinition = cast<UiObjectDefinition *>(parent);
+        if (parentDefinition &&
+            unsyncronizableChanges == QmlJSLiveTextPreview::NoUnsyncronizableChanges) {
 
             if (parentDefinition->qualifiedTypeNameId
                        && parentDefinition->qualifiedTypeNameId->name)