diff --git a/src/libs/qmljs/qmljsdelta.cpp b/src/libs/qmljs/qmljsdelta.cpp
index 4cadf2f33440c5bf5a00008bf92d74acbd82b5c6..da0022a419dbb81f9c4643b551c87aa64ea45ca9 100644
--- a/src/libs/qmljs/qmljsdelta.cpp
+++ b/src/libs/qmljs/qmljsdelta.cpp
@@ -390,6 +390,9 @@ void Delta::update(UiObjectMember* oldObject, const QmlJS::Document::Ptr& oldDoc
             const QString scriptCode = _scriptCode(script, newDoc);
             UiScriptBinding *previousScript = cast<UiScriptBinding *>(oldMember);
             if (!previousScript || _scriptCode(previousScript, oldDoc) != scriptCode) {
+                if (debugReferences.count()==0) {
+                    notifyUnsyncronizableElementChange(newObject);
+                }
                 foreach (DebugId ref, debugReferences) {
                     if (ref != -1)
                         updateScriptBinding(ref, newObject, script, property, scriptCode);
@@ -401,6 +404,9 @@ void Delta::update(UiObjectMember* oldObject, const QmlJS::Document::Ptr& oldDoc
             UiSourceElement *previousSource = cast<UiSourceElement*>(oldMember);
 
             if (!previousSource || _methodCode(previousSource, oldDoc) != methodCode) {
+                if (debugReferences.count()==0) {
+                    notifyUnsyncronizableElementChange(newObject);
+                }
                 foreach (DebugId ref, debugReferences) {
                     if (ref != -1)
                         updateMethodBody(ref, newObject, script, methodName, methodCode);
@@ -476,10 +482,13 @@ Delta::DebugIdMap Delta::operator()(const Document::Ptr &doc1, const Document::P
         UiObjectMember *x = M.way2[y];
         Q_ASSERT(cast<UiObjectDefinition *>(x) || cast<UiObjectBinding *>(x) );
 
-        if (debugIds.contains(x)) {
-            QList<DebugId> ids = debugIds[x];
-            newDebuggIds[y] = ids;
-            update(x, doc1, y, doc2, ids);
+        {
+            QList<DebugId> updateIds;
+            if (debugIds.contains(x)) {
+                updateIds = debugIds[x];
+                newDebuggIds[y] = updateIds;
+            }
+            update(x, doc1, y, doc2, updateIds);
         }
         //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);
@@ -533,5 +542,8 @@ void Delta::updateMethodBody(DebugId, UiObjectMember *, UiScriptBinding *, const
 void Delta::updateScriptBinding(DebugId, UiObjectMember *, UiScriptBinding *, const QString &, const QString &)
 {}
 
+void Delta::notifyUnsyncronizableElementChange(UiObjectMember *)
+{}
+
 } //namespace QmlJs
 
diff --git a/src/libs/qmljs/qmljsdelta.h b/src/libs/qmljs/qmljsdelta.h
index d6c6660b0eadfe46ed6ba70c9e18a7e308b62aa5..385d0f6934dad2f0ac4b645a45a9d8e83374b7e6 100644
--- a/src/libs/qmljs/qmljsdelta.h
+++ b/src/libs/qmljs/qmljsdelta.h
@@ -72,6 +72,7 @@ protected:
     virtual void reparentObject(int debugId, int newParent);
     virtual void createObject(const QString &qmlText, DebugId ref,
                               const QStringList &importList, const QString &filename);
+    virtual void notifyUnsyncronizableElementChange(AST::UiObjectMember *parent);
 
 private:
     QmlJS::Document::Ptr m_currentDoc;
diff --git a/src/plugins/qmljsinspector/qmljslivetextpreview.cpp b/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
index 94dbe08ee725b6a85c71dd70d8da4c6eeff895ee..7dca4c4e428717c656e9a9969668cc47ca9f2d83 100644
--- a/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
+++ b/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
@@ -426,7 +426,7 @@ protected:
                                   const QString& methodName, const QString& methodBody)
     {
         Q_UNUSED(scriptBinding);
-        checkUnsyncronizableElementChanges(parentDefinition);
+        Q_UNUSED(parentDefinition);
         appliedChangesToViewer = true;
         m_clientProxy->setMethodBodyForObject(debugId, methodName, methodBody);
     }
@@ -442,7 +442,6 @@ protected:
                 unsyncronizableChangeLine = parentDefinition->firstSourceLocation().startLine;
                 unsyncronizableChangeColumn = parentDefinition->firstSourceLocation().startColumn;
             }
-            checkUnsyncronizableElementChanges(parentDefinition);
         }
 
         QVariant expr = scriptCode;
@@ -479,38 +478,15 @@ protected:
         m_clientProxy->reparentQmlObject(debugId, newParent);
     }
 
-    void checkUnsyncronizableElementChanges(UiObjectMember *parent)
+    void notifyUnsyncronizableElementChange(UiObjectMember *parent)
     {
-        UiObjectDefinition *parentDefinition = cast<UiObjectDefinition *>(parent);
-        if (parentDefinition &&
-            unsyncronizableChanges == QmlJSLiveTextPreview::NoUnsyncronizableChanges) {
-
-            if (parentDefinition->qualifiedTypeNameId
+        if (unsyncronizableChanges == QmlJSLiveTextPreview::NoUnsyncronizableChanges) {
+            UiObjectDefinition *parentDefinition = cast<UiObjectDefinition *>(parent);
+            if (parentDefinition && parentDefinition->qualifiedTypeNameId
                        && parentDefinition->qualifiedTypeNameId->name)
             {
-                QString elementName = parentDefinition->qualifiedTypeNameId->name->asString();
-                if (elementName == QLatin1String("PropertyChanges")
-                 // State element can be changed, but not its contents like PropertyChanges.
-                 || elementName == QLatin1String("StateGroup")
-                 || elementName == QLatin1String("StateChangeScript")
-                 || elementName == QLatin1String("ParentChange")
-                 || elementName == QLatin1String("AnchorChanges")
-                 || elementName == QLatin1String("Connections")
-                 || elementName == QLatin1String("Binding")
-                 || elementName == QLatin1String("ListModel")
-                 || elementName == QLatin1String("ListElement")
-                 || elementName == QLatin1String("VisualItemModel")
-                 || elementName == QLatin1String("VisualDataModel")
-                 || elementName == QLatin1String("Package")
-                 // XmlListModel properties *can* be edited but XmlRole doesn't refresh the model when changed
-                 || elementName == QLatin1String("XmlRole"))
-                {
-                    unsyncronizableElementName = elementName;
-                    unsyncronizableChanges = QmlJSLiveTextPreview::ElementChangeWarning;
-                }
-            }
-
-            if (unsyncronizableChanges != QmlJSLiveTextPreview::NoUnsyncronizableChanges) {
+                unsyncronizableElementName = parentDefinition->qualifiedTypeNameId->name->asString();
+                unsyncronizableChanges = QmlJSLiveTextPreview::ElementChangeWarning;
                 unsyncronizableChangeLine = parentDefinition->firstSourceLocation().startLine;
                 unsyncronizableChangeColumn = parentDefinition->firstSourceLocation().startColumn;
             }