diff --git a/src/plugins/qmldesigner/core/filemanager/qmlrewriter.cpp b/src/plugins/qmldesigner/core/filemanager/qmlrewriter.cpp index e148c80cca595279a50bf260a0b5c51d32505085..83a304e931547e9bfd31d6633a65dd017add9971 100644 --- a/src/plugins/qmldesigner/core/filemanager/qmlrewriter.cpp +++ b/src/plugins/qmldesigner/core/filemanager/qmlrewriter.cpp @@ -276,29 +276,33 @@ void QMLRewriter::includeLeadingEmptyLine(int &start) const UiObjectMemberList *QMLRewriter::searchMemberToInsertAfter(UiObjectMemberList *members, const QStringList &propertyOrder) { const int objectDefinitionInsertionPoint = propertyOrder.indexOf(QString::null); - UiObjectMemberList *previous = 0; + + UiObjectMemberList *lastObjectDef = 0; + UiObjectMemberList *lastNonObjectDef = 0; + for (UiObjectMemberList *iter = members; iter; iter = iter->next) { UiObjectMember *member = iter->member; int idx = -1; - if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member)) + if (cast<UiObjectDefinition*>(member)) + lastObjectDef = iter; + else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member)) idx = propertyOrder.indexOf(flatten(arrayBinding->qualifiedId)); else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member)) idx = propertyOrder.indexOf(flatten(objectBinding->qualifiedId)); - else if (cast<UiObjectDefinition*>(member)) - idx = propertyOrder.indexOf(QString::null); else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member)) idx = propertyOrder.indexOf(flatten(scriptBinding->qualifiedId)); else if (cast<UiPublicMember*>(member)) idx = propertyOrder.indexOf(QLatin1String("property")); - if (idx > objectDefinitionInsertionPoint) - return iter; - - previous = iter; + if (idx < objectDefinitionInsertionPoint) + lastNonObjectDef = iter; } - return previous; + if (lastObjectDef) + return lastObjectDef; + else + return lastNonObjectDef; } UiObjectMemberList *QMLRewriter::searchMemberToInsertAfter(UiObjectMemberList *members, const QString &propertyName, const QStringList &propertyOrder) diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp index f42069fc794fd3c5fdbc1a53c4f3beba530b5bb0..e7da2755c5cf1cdaf650895a50739155c0cb8809 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp @@ -663,8 +663,6 @@ void TestCore::testRewriterPreserveOrder() QCOMPARE(newModelNode.id(), QString("rectangle2")); } - QSKIP("See BAUHAUS-631", SkipAll); - { QPlainTextEdit textEdit; textEdit.setPlainText(qmlString1);