diff options
Diffstat (limited to 'src/qml/qml/qqmldata_p.h')
-rw-r--r-- | src/qml/qml/qqmldata_p.h | 17 |
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); |