From: Erik Verbruggen Date: Thu, 10 Jun 2010 09:18:14 +0000 (+0200) Subject: Fixed id syncing when and id gets removed from the QML source. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=2de4a98ce0247efef280b6648c707e8575481c48;p=qt-creator-jp%2Fqt-creator-jp.git Fixed id syncing when and id gets removed from the QML source. Task-number: BAUHAUS-780 Reviewed-by: kkoehne --- diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index cf5dd94150..81a1dd18d6 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -636,6 +636,8 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, context->enterScope(astNode); QSet modelPropertyNames = QSet::fromList(modelNode.propertyNames()); + if (!modelNode.id().isEmpty()) + modelPropertyNames.insert(QLatin1String("id")); QList defaultPropertyItems; for (UiObjectMemberList *iter = astInitializer->members; iter; iter = iter->next) { @@ -744,7 +746,10 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, AbstractProperty modelProperty = modelNode.property(modelPropertyName); // property deleted. - differenceHandler.propertyAbsentFromQml(modelProperty); + if (modelPropertyName == QLatin1String("id")) + differenceHandler.idsDiffer(modelNode, QString()); + else + differenceHandler.propertyAbsentFromQml(modelProperty); } context->leaveScope(); diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp index 1b40436aff..b3a36212ce 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp @@ -5441,7 +5441,7 @@ void TestCore::testRewriterRemoveId() QVERIFY(view.data()); model->attachView(view.data()); - QScopedPointer testRewriterView(new TestRewriterView()); + QScopedPointer testRewriterView(new TestRewriterView(0, TestRewriterView::Amend)); testRewriterView->setTextModifier(&textModifier); model->attachView(testRewriterView.data()); @@ -5449,7 +5449,6 @@ void TestCore::testRewriterRemoveId() QVERIFY(rootModelNode.isValid()); QCOMPARE(rootModelNode.id(), QString("rect")); - QSKIP("Fix me!!!! Task BAUHAUS-780", SkipAll); // // remove id in text // diff --git a/tests/auto/qml/qmldesigner/coretests/testrewriterview.cpp b/tests/auto/qml/qmldesigner/coretests/testrewriterview.cpp index b12c164a6d..eb3cf27b80 100644 --- a/tests/auto/qml/qmldesigner/coretests/testrewriterview.cpp +++ b/tests/auto/qml/qmldesigner/coretests/testrewriterview.cpp @@ -83,7 +83,9 @@ VariantProperty TestModelToTextMerger::findAddedVariantProperty(const VariantPro return VariantProperty(); } -TestRewriterView::TestRewriterView(QObject *parent) : RewriterView(RewriterView::Validate, parent) +TestRewriterView::TestRewriterView(QObject *parent, + DifferenceHandling differenceHandling) + : RewriterView(differenceHandling, parent) { } diff --git a/tests/auto/qml/qmldesigner/coretests/testrewriterview.h b/tests/auto/qml/qmldesigner/coretests/testrewriterview.h index 0fa319f219..c313fe5bed 100644 --- a/tests/auto/qml/qmldesigner/coretests/testrewriterview.h +++ b/tests/auto/qml/qmldesigner/coretests/testrewriterview.h @@ -53,7 +53,8 @@ class TestRewriterView : public RewriterView Q_OBJECT public: - TestRewriterView(QObject *parent = 0); + TestRewriterView(QObject *parent = 0, + DifferenceHandling differenceHandling = RewriterView::Validate); Internal::TestModelToTextMerger *modelToTextMerger() const; Internal::TextToModelMerger *textToModelMerger() const;