aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickvisualdatamodel_p_p.h
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2012-03-28 16:30:50 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-21 07:52:15 +0200
commit8c951842d81a73c1fd6712701723430584d1a497 (patch)
tree8ca50dcf2e2e4a60fd29a100826ab5e8ee3d0ac9 /src/quick/items/qquickvisualdatamodel_p_p.h
parentcd5df3ec6fdb79260ca5bddff4f3eda9717bd70b (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.h35
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