Utilize the property cache for item view context objects.
authorAndrew den Exter <andrew.den-exter@nokia.com>
Thu, 15 Dec 2011 02:41:56 +0000 (12:41 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 15 Dec 2011 02:50:41 +0000 (03:50 +0100)
A common QDeclarativePropertyCache was being constructed for dynamic
objects but never bound to the constructed objects.

Change-Id: I83b3841d8b78e2f2dd8e0494ea2601c20d6e6e88
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>

src/quick/items/qquickvisualadaptormodel.cpp
src/quick/items/qquickvisualadaptormodel_p.h

index 6b7919c..9c57d9f 100644 (file)
@@ -451,7 +451,6 @@ QQuickVisualAdaptorModelData *QQuickVisualAdaptorModelPrivate::createMetaObject(
             && m_listAccessor->type() != QDeclarativeListAccessor::ListProperty
             && m_listAccessor->type() != QDeclarativeListAccessor::Instance) {
         createModelData = &QQuickVDMListAccessorData::create;
-        m_flags = QQuickVisualAdaptorModel::MetaObjectCacheable;
         return QQuickVDMListAccessorData::create(index, model);
     }
 
@@ -467,7 +466,6 @@ QQuickVisualAdaptorModelData *QQuickVisualAdaptorModelPrivate::createMetaObject(
         }
         if (m_propertyData.count() == 1)
             addProperty(roles.first(), 1, "modelData", "QVariant", true);
-        m_flags = QQuickVisualAdaptorModel::MetaObjectCacheable;
     } else if (m_abstractItemModel) {
         setModelDataType<QQuickVDMAbstractItemModelData>();
         QHash<int, QByteArray> roleNames = m_abstractItemModel->roleNames();
@@ -477,7 +475,6 @@ QQuickVisualAdaptorModelData *QQuickVisualAdaptorModelPrivate::createMetaObject(
         }
         if (m_propertyData.count() == 1)
             addProperty(roleNames.begin().key(), 1, "modelData", "QVariant", true);
-        m_flags = QQuickVisualAdaptorModel::MetaObjectCacheable;
     } else if (m_listAccessor) {
         setModelDataType<QQuickVDMObjectData>();
         m_objectList = true;
@@ -498,6 +495,12 @@ QQuickVisualAdaptorModelData::QQuickVisualAdaptorModelData(int index, QQuickVisu
     : m_index(index)
     , m_model(model)
 {
+    QQuickVisualAdaptorModelPrivate *m = QQuickVisualAdaptorModelPrivate::get(model);
+    if (m->m_delegateDataType && m->m_delegateDataType->propertyCache) {
+        QDeclarativeData *qmldata = QDeclarativeData::get(this, true);
+        qmldata->propertyCache = m->m_delegateDataType->propertyCache;
+        qmldata->propertyCache->addref();
+    }
 }
 
 QQuickVisualAdaptorModelData::~QQuickVisualAdaptorModelData()
index 31eba50..41d913c 100644 (file)
@@ -61,8 +61,7 @@ class QQuickVisualAdaptorModel : public QObject
 public:
     enum Flag
     {
-        MetaObjectCacheable = 0x01,
-        ProxiedObject       = 0x02
+        ProxiedObject       = 0x01
     };
     Q_DECLARE_FLAGS(Flags, Flag)