diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2012-03-28 16:30:50 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-21 07:52:15 +0200 |
commit | 8c951842d81a73c1fd6712701723430584d1a497 (patch) | |
tree | 8ca50dcf2e2e4a60fd29a100826ab5e8ee3d0ac9 /src/quick/items/qquickvisualdatamodel_p_p.h | |
parent | cd5df3ec6fdb79260ca5bddff4f3eda9717bd70b (diff) |
Improve detection of deleted VisualDataModel items.
The data object for each delegate object has a pointer guard with a
virtual objectDestroyed() function, that's a better tool for detecting
deletion than the destructor of a child object.
Change-Id: Iad1516e3daeb5e019ece6c3b2eb65da768cf43cb
Reviewed-by: Bea Lam <bea.lam@nokia.com>
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/quick/items/qquickvisualdatamodel_p_p.h')
-rw-r--r-- | src/quick/items/qquickvisualdatamodel_p_p.h | 35 |
1 files changed, 7 insertions, 28 deletions
diff --git a/src/quick/items/qquickvisualdatamodel_p_p.h b/src/quick/items/qquickvisualdatamodel_p_p.h index d539c4918f..5fd99d008f 100644 --- a/src/quick/items/qquickvisualdatamodel_p_p.h +++ b/src/quick/items/qquickvisualdatamodel_p_p.h @@ -103,7 +103,7 @@ public: class QQuickVisualAdaptorModel; class QVDMIncubationTask; -class QQuickVisualDataModelItem : public QObject, public QV8ObjectResource +class QQuickVisualDataModelItem : public QObject, public QV8ObjectResource, public QQmlGuard<QObject> { Q_OBJECT Q_PROPERTY(int index READ modelIndex NOTIFY modelIndexChanged) @@ -135,11 +135,6 @@ public: virtual void setValue(const QString &role, const QVariant &value) { Q_UNUSED(role); Q_UNUSED(value); } virtual bool resolveIndex(const QQuickVisualAdaptorModel &, int) { return false; } -Q_SIGNALS: - void modelIndexChanged(); - -public: - QQmlGuard<QObject> object; QQuickVisualDataModelItemMetaType * const metaType; QQuickVisualDataModelAttached *attached; v8::Persistent<v8::Object> indexHandle; @@ -150,6 +145,12 @@ public: int groups; int index[QQuickListCompositor::MaximumGroupCount]; QVDMIncubationTask *incubationTask; + +Q_SIGNALS: + void modelIndexChanged(); + +protected: + void objectDestroyed(QObject *); }; @@ -394,28 +395,6 @@ private: QQuickVisualDataModelItemMetaType *metaType; }; -class QQuickVisualDataModelContext : public QQmlContext -{ - Q_OBJECT -public: - QQuickVisualDataModelContext( - QQuickVisualDataModelItem *cacheItem, - QQmlContext *parentContext, - QObject *parent = 0) - : QQmlContext(parentContext, parent) - , cacheItem(cacheItem) - { - ++cacheItem->scriptRef; - } - - ~QQuickVisualDataModelContext() - { - cacheItem->Dispose(); - } - - QQuickVisualDataModelItem *cacheItem; -}; - QT_END_NAMESPACE #endif |