diff options
author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-04-22 13:39:06 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-04-23 08:27:43 +0000 |
commit | 3fdec636980c23b14cfc6aa74bc48bbb960ba0b4 (patch) | |
tree | 8e7dad673bfbd8e38fe6974088eb914ac18da8b1 /src/qml/compiler | |
parent | 346abd22118c81e8434ff5a2a7694bd81fe17be1 (diff) |
Fix regression with nested objects served by custom parsers
The following piece of code used to work and broke with Qt 5.3:
ListModel {
property var conn: Connection {
...
}
}
When validating the properties of the ListModel we would not validate
the Connection sub-object here, which meant the custom parser for the
connection object was never called.
We need to extend the logic for sub-object validation to recursive into
sub-objects when this is either an attached property (Component.onComplete on a
list model for example) or the object is assigned to an _existing_ property,
i.e. a property not deal with by the custom parser. In this case that's a
custom declared property.
Change-Id: Ic99f746f08771460cc6424a9e8a839c78a7eafd9
Task-number: QTBUG-45735
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler')
-rw-r--r-- | src/qml/compiler/qqmltypecompiler.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/qml/compiler/qqmltypecompiler.cpp b/src/qml/compiler/qqmltypecompiler.cpp index 4bdfe444f5..21846775a3 100644 --- a/src/qml/compiler/qqmltypecompiler.cpp +++ b/src/qml/compiler/qqmltypecompiler.cpp @@ -1891,7 +1891,7 @@ bool QQmlPropertyValidator::validateObject(int objectIndex, const QV4::CompiledD bool seenSubObjectWithId = false; - if (binding->type >= QV4::CompiledData::Binding::Type_Object && (!customParser || binding->type == QV4::CompiledData::Binding::Type_AttachedProperty)) { + if (binding->type >= QV4::CompiledData::Binding::Type_Object && (pd || binding->isAttachedProperty())) { qSwap(_seenObjectWithId, seenSubObjectWithId); const bool subObjectValid = validateObject(binding->value.objectIndex, binding, pd && QQmlValueTypeFactory::metaObjectForMetaType(pd->propType)); qSwap(_seenObjectWithId, seenSubObjectWithId); |