Fixed id syncing when and id gets removed from the QML source.

Task-number: BAUHAUS-780
Reviewed-by: kkoehne
This commit is contained in:
Erik Verbruggen
2010-06-10 11:18:14 +02:00
parent b099596858
commit 2de4a98ce0
4 changed files with 12 additions and 5 deletions

View File

@@ -636,6 +636,8 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
context->enterScope(astNode); context->enterScope(astNode);
QSet<QString> modelPropertyNames = QSet<QString>::fromList(modelNode.propertyNames()); QSet<QString> modelPropertyNames = QSet<QString>::fromList(modelNode.propertyNames());
if (!modelNode.id().isEmpty())
modelPropertyNames.insert(QLatin1String("id"));
QList<UiObjectMember *> defaultPropertyItems; QList<UiObjectMember *> defaultPropertyItems;
for (UiObjectMemberList *iter = astInitializer->members; iter; iter = iter->next) { for (UiObjectMemberList *iter = astInitializer->members; iter; iter = iter->next) {
@@ -744,6 +746,9 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
AbstractProperty modelProperty = modelNode.property(modelPropertyName); AbstractProperty modelProperty = modelNode.property(modelPropertyName);
// property deleted. // property deleted.
if (modelPropertyName == QLatin1String("id"))
differenceHandler.idsDiffer(modelNode, QString());
else
differenceHandler.propertyAbsentFromQml(modelProperty); differenceHandler.propertyAbsentFromQml(modelProperty);
} }

View File

@@ -5441,7 +5441,7 @@ void TestCore::testRewriterRemoveId()
QVERIFY(view.data()); QVERIFY(view.data());
model->attachView(view.data()); model->attachView(view.data());
QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView(0, TestRewriterView::Amend));
testRewriterView->setTextModifier(&textModifier); testRewriterView->setTextModifier(&textModifier);
model->attachView(testRewriterView.data()); model->attachView(testRewriterView.data());
@@ -5449,7 +5449,6 @@ void TestCore::testRewriterRemoveId()
QVERIFY(rootModelNode.isValid()); QVERIFY(rootModelNode.isValid());
QCOMPARE(rootModelNode.id(), QString("rect")); QCOMPARE(rootModelNode.id(), QString("rect"));
QSKIP("Fix me!!!! Task BAUHAUS-780", SkipAll);
// //
// remove id in text // remove id in text
// //

View File

@@ -83,7 +83,9 @@ VariantProperty TestModelToTextMerger::findAddedVariantProperty(const VariantPro
return VariantProperty(); return VariantProperty();
} }
TestRewriterView::TestRewriterView(QObject *parent) : RewriterView(RewriterView::Validate, parent) TestRewriterView::TestRewriterView(QObject *parent,
DifferenceHandling differenceHandling)
: RewriterView(differenceHandling, parent)
{ {
} }

View File

@@ -53,7 +53,8 @@ class TestRewriterView : public RewriterView
Q_OBJECT Q_OBJECT
public: public:
TestRewriterView(QObject *parent = 0); TestRewriterView(QObject *parent = 0,
DifferenceHandling differenceHandling = RewriterView::Validate);
Internal::TestModelToTextMerger *modelToTextMerger() const; Internal::TestModelToTextMerger *modelToTextMerger() const;
Internal::TextToModelMerger *textToModelMerger() const; Internal::TextToModelMerger *textToModelMerger() const;