diff options
author | Warwick Allison <warwick.allison@nokia.com> | 2010-06-25 06:37:28 (GMT) |
---|---|---|
committer | Warwick Allison <warwick.allison@nokia.com> | 2010-06-25 06:37:28 (GMT) |
commit | 03df7f73de6a1fd482876caaf377a61593df8a38 (patch) | |
tree | c9e70014c4646d3b1b2a02369862a6557c87e15e /src/declarative/util | |
parent | c91030e308f8cd9ad66e7de127a1f9dbbedd11d3 (diff) | |
download | Qt-03df7f73de6a1fd482876caaf377a61593df8a38.zip Qt-03df7f73de6a1fd482876caaf377a61593df8a38.tar.gz Qt-03df7f73de6a1fd482876caaf377a61593df8a38.tar.bz2 |
Test ListElement type via type system, not string comparison.
Task-number: QTBUG-11222
Reviewed-by: Aaron Kennedy
Diffstat (limited to 'src/declarative/util')
-rw-r--r-- | src/declarative/util/qdeclarativelistmodel.cpp | 11 | ||||
-rw-r--r-- | src/declarative/util/qdeclarativelistmodel_p.h | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp index 9ed21a6..deb835d 100644 --- a/src/declarative/util/qdeclarativelistmodel.cpp +++ b/src/declarative/util/qdeclarativelistmodel.cpp @@ -551,9 +551,13 @@ bool QDeclarativeListModelParser::compileProperty(const QDeclarativeCustomParser QDeclarativeCustomParserNode node = qvariant_cast<QDeclarativeCustomParserNode>(value); - if (node.name() != "ListElement") { - error(node, QDeclarativeListModel::tr("ListElement: cannot contain nested elements")); - return false; + if (node.name() != listElementTypeName) { + const QMetaObject *mo = resolveType(node.name()); + if (mo != &QDeclarativeListElement::staticMetaObject) { + error(node, QDeclarativeListModel::tr("ListElement: cannot contain nested elements")); + return false; + } + listElementTypeName = node.name(); // cache right name for next time } { @@ -650,6 +654,7 @@ QByteArray QDeclarativeListModelParser::compile(const QList<QDeclarativeCustomPa { QList<ListInstruction> instr; QByteArray data; + listElementTypeName = QByteArray(); // unknown for(int ii = 0; ii < customProps.count(); ++ii) { const QDeclarativeCustomParserProperty &prop = customProps.at(ii); diff --git a/src/declarative/util/qdeclarativelistmodel_p.h b/src/declarative/util/qdeclarativelistmodel_p.h index d09062e..6aff9c6 100644 --- a/src/declarative/util/qdeclarativelistmodel_p.h +++ b/src/declarative/util/qdeclarativelistmodel_p.h @@ -135,6 +135,8 @@ private: bool compileProperty(const QDeclarativeCustomParserProperty &prop, QList<ListInstruction> &instr, QByteArray &data); bool definesEmptyList(const QString &); + + QByteArray listElementTypeName; }; |