diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-07-05 13:01:50 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-07-07 02:32:21 +0200 |
commit | 06ce394b06214569e0a863dcc3ad8538c8a6aa47 (patch) | |
tree | f73842f193cc103554bceca5968d3c30b513a4c8 /src/declarative | |
parent | cce4dc1001a25977a3eb0ad401361275f29d30ea (diff) |
Correct handling of QObject* and QWidget* properties
Change-Id: I28eb68bc0236d5f7a7f9cc178462c3ad6055924e
Reviewed-on: http://codereview.qt.nokia.com/1128
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Diffstat (limited to 'src/declarative')
-rw-r--r-- | src/declarative/qml/qdeclarativepropertycache.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/declarative/qml/qdeclarativepropertycache.cpp b/src/declarative/qml/qdeclarativepropertycache.cpp index 24dc15aeb1..8dba8e4350 100644 --- a/src/declarative/qml/qdeclarativepropertycache.cpp +++ b/src/declarative/qml/qdeclarativepropertycache.cpp @@ -80,7 +80,7 @@ static QDeclarativePropertyCache::Data::Flags flagsForPropertyType(int propType, { QDeclarativePropertyCache::Data::Flags flags; - if (propType < QMetaType::User) { + if (propType < QMetaType::User && propType != QMetaType::QObjectStar && propType != QMetaType::QWidgetStar) { } else if (propType == qMetaTypeId<QDeclarativeBinding *>()) { flags |= QDeclarativePropertyCache::Data::IsQmlBinding; } else if (propType == qMetaTypeId<QScriptValue>()) { @@ -118,7 +118,10 @@ void QDeclarativePropertyCache::Data::lazyLoad(const QMetaProperty &p, QDeclarat flags = fastFlagsForProperty(p); int type = p.type(); - if (type == QVariant::UserType || type == -1) { + if (type == QMetaType::QObjectStar || type == QMetaType::QWidgetStar) { + propType = type; + flags |= QDeclarativePropertyCache::Data::IsQObjectDerived; + } else if (type == QVariant::UserType || type == -1) { propTypeName = p.typeName(); flags |= QDeclarativePropertyCache::Data::NotFullyResolved; } else { |