diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2011-12-15 12:41:56 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-15 03:50:41 +0100 |
commit | 7e2c152089e5f54b254d8dae7cbfe0f3bbd68293 (patch) | |
tree | 21ca00b8a379361a6f90476327c95758a8bde391 | |
parent | 89892191761db53b2094315362be695f054a8700 (diff) |
Utilize the property cache for item view context objects.
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>
-rw-r--r-- | src/quick/items/qquickvisualadaptormodel.cpp | 9 | ||||
-rw-r--r-- | src/quick/items/qquickvisualadaptormodel_p.h | 3 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/quick/items/qquickvisualadaptormodel.cpp b/src/quick/items/qquickvisualadaptormodel.cpp index 6b7919c639..9c57d9f75f 100644 --- a/src/quick/items/qquickvisualadaptormodel.cpp +++ b/src/quick/items/qquickvisualadaptormodel.cpp @@ -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() diff --git a/src/quick/items/qquickvisualadaptormodel_p.h b/src/quick/items/qquickvisualadaptormodel_p.h index 31eba503ea..41d913c47e 100644 --- a/src/quick/items/qquickvisualadaptormodel_p.h +++ b/src/quick/items/qquickvisualadaptormodel_p.h @@ -61,8 +61,7 @@ class QQuickVisualAdaptorModel : public QObject public: enum Flag { - MetaObjectCacheable = 0x01, - ProxiedObject = 0x02 + ProxiedObject = 0x01 }; Q_DECLARE_FLAGS(Flags, Flag) |