Set IsDirect flag of property cache data if appropriate
authorKent Hansen <kent.hansen@nokia.com>
Thu, 11 Aug 2011 07:15:38 +0000 (09:15 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 11 Aug 2011 08:22:16 +0000 (10:22 +0200)
The IsDirect flag was only set in
QDeclarativePropertyCache::append(), but it should be
set in create() as well.

Change-Id: I43c980e5f7e01e44ade662c11c2daf7a9a44d299
Reviewed-on: http://codereview.qt.nokia.com/2844
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>

src/declarative/qml/qdeclarativepropertycache.cpp

index d2148ad..0c595a9 100644 (file)
@@ -247,6 +247,8 @@ QDeclarativePropertyCache::Data QDeclarativePropertyCache::create(const QMetaObj
                 QMetaProperty p = metaObject->property(idx);
                 if (p.isScriptable()) {
                     rv.load(metaObject->property(idx));
+                    if (!isDynamicMetaObject(cmo))
+                        rv.flags |= Data::IsDirect;
                     return rv;
                 } else {
                     while (cmo && cmo->propertyOffset() >= idx)
@@ -271,6 +273,8 @@ QDeclarativePropertyCache::Data QDeclarativePropertyCache::create(const QMetaObj
 
         if (methodNameRef == property) {
             rv.load(m);
+            if (!isDynamicMetaObject(m.enclosingMetaObject()))
+                rv.flags |= Data::IsDirect;
             return rv;
         }
     }