aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmldata_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmldata_p.h')
-rw-r--r--src/qml/qml/qqmldata_p.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/qml/qml/qqmldata_p.h b/src/qml/qml/qqmldata_p.h
index e97bbb15dc..4849db0060 100644
--- a/src/qml/qml/qqmldata_p.h
+++ b/src/qml/qml/qqmldata_p.h
@@ -195,6 +195,10 @@ public:
QHash<int, QObject *> *attachedProperties() const;
static inline bool wasDeleted(QObject *);
+
+ static void markAsDeleted(QObject *);
+ static inline void setQueuedForDeletion(QObject *);
+
private:
// For objectNameNotifier and attachedProperties
mutable QQmlDataExtended *extendedData;
@@ -205,7 +209,7 @@ bool QQmlData::wasDeleted(QObject *object)
if (!object)
return true;
- QObjectPrivate *priv = QObjectPrivate::get(const_cast<QObject *>(object));
+ QObjectPrivate *priv = QObjectPrivate::get(object);
if (priv->wasDeleted)
return true;
@@ -213,6 +217,17 @@ bool QQmlData::wasDeleted(QObject *object)
static_cast<QQmlData *>(priv->declarativeData)->isQueuedForDeletion;
}
+void QQmlData::setQueuedForDeletion(QObject *object)
+{
+ if (object) {
+ if (QObjectPrivate *priv = QObjectPrivate::get(object)) {
+ if (!priv->wasDeleted && priv->declarativeData) {
+ static_cast<QQmlData *>(priv->declarativeData)->isQueuedForDeletion = true;
+ }
+ }
+ }
+}
+
QQmlNotifierEndpoint *QQmlData::notify(int index)
{
Q_ASSERT(index <= 0xFFFF);