Correct handling of QObject* and QWidget* properties
authorAaron Kennedy <aaron.kennedy@nokia.com>
Tue, 5 Jul 2011 03:01:50 +0000 (13:01 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 7 Jul 2011 00:32:21 +0000 (02:32 +0200)
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>
src/declarative/qml/qdeclarativepropertycache.cpp

index 24dc15a..8dba8e4 100644 (file)
@@ -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 {