Changed ID setting to be done before type change when reading from a file.

This commit is contained in:
Erik Verbruggen
2010-01-11 14:34:58 +01:00
parent 518bdd3b5e
commit e58e9f59c7

View File

@@ -122,14 +122,11 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, const QmlDomObject &domOb
{
m_rewriterView->positionStorage()->setNodeOffset(modelNode, domObject.position());
if (modelNode.type() != domObject.objectType()
|| modelNode.majorVersion() != domObject.objectTypeMajorVersion()
|| modelNode.minorVersion() != domObject.objectTypeMinorVersion()) {
differenceHandler.typeDiffers(modelNode, domObject);
}
{
const QString domObjectId = domObject.objectId();
QString domObjectId = domObject.objectId();
const QmlDomProperty domIdProperty = domObject.property("id");
if (domObjectId.isEmpty() && domIdProperty.value().isLiteral())
domObjectId = domIdProperty.value().toLiteral().literal();
if (domObjectId.isEmpty()) {
if (!modelNode.id().isEmpty())
@@ -140,6 +137,12 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, const QmlDomObject &domOb
}
}
if (modelNode.type() != domObject.objectType()
|| modelNode.majorVersion() != domObject.objectTypeMajorVersion()
|| modelNode.minorVersion() != domObject.objectTypeMinorVersion()) {
differenceHandler.typeDiffers(modelNode, domObject);
}
QSet<QString> modelPropertyNames = QSet<QString>::fromList(modelNode.propertyNames());
foreach (const QmlDomProperty &domProperty, domObject.properties()) {
@@ -149,15 +152,8 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, const QmlDomObject &domOb
continue;
if (domPropertyName == QLatin1String("id")) {
const QmlDomValue domValue = domProperty.value();
if (domValue.isLiteral()) {
const QString domId = domValue.toLiteral().literal();
if (modelNode.id() != domId)
differenceHandler.idsDiffer(modelNode, domId);
} else {
qWarning() << "id property found which is not a literal";
}
// already done before
continue;
} else if (domPropertyName.isEmpty()) {
qWarning() << "QML DOM returned an empty property name";
continue;