QList<RewriteAction *> actionsToRemove;
QHash<AbstractProperty, RewriteAction *> removedProperties;
QHash<AbstractProperty, ChangePropertyRewriteAction *> changedProperties;
- QSet<AbstractProperty> addedProperties;
+ QHash<AbstractProperty, AddPropertyRewriteAction *> addedProperties;
QMutableListIterator<RewriteAction*> iter(actions);
iter.toBack();
RewriteAction *action = iter.previous();
if (RemovePropertyRewriteAction *removeAction = action->asRemovePropertyRewriteAction()) {
- removedProperties.insert(removeAction->property(), action);
+ const AbstractProperty property = removeAction->property();
+ if (AddPropertyRewriteAction *addAction = addedProperties.value(property, 0)) {
+ actionsToRemove.append(addAction);
+ actionsToRemove.append(removeAction);
+ addedProperties.remove(property);
+ } else {
+ removedProperties.insert(property, action);
+ }
} else if (ChangePropertyRewriteAction *changeAction = action->asChangePropertyRewriteAction()) {
const AbstractProperty property = changeAction->property();
if (changedProperties.contains(property))
changedProperties.remove(property);
- addedProperties.insert(property);
+ addedProperties.insert(property, addAction);
}
}
}
if (m_textToModelMerger && m_textModifier) {
const QString newQmlText = m_textModifier->text();
-// qDebug() << "qmlTextChanged:" << newQmlText;
+#if 0
+ qDebug() << Q_FUNC_INFO;
+ qDebug() << "old:" << lastCorrectQmlSource;
+ qDebug() << "new:" << newQmlText;
+#endif
switch (m_differenceHandling) {
case Validate: {