diff options
author | Kari Oikarinen <kari.oikarinen@qt.io> | 2020-03-10 09:43:44 +0200 |
---|---|---|
committer | Kari Oikarinen <kari.oikarinen@qt.io> | 2020-03-10 09:43:44 +0200 |
commit | b67264a2644b22dc23f6a06ff48974c77cb45d84 (patch) | |
tree | 3ac6547ac4daecac92feb4d192ed0cf97f5b758a /src/qmlmodels/qqmltableinstancemodel.cpp | |
parent | df034c07be4828778d43a4037f89f31ac26f411d (diff) | |
parent | 92daa739ec114a0c9ae841db0459b0eff1f86cef (diff) |
Merge 5.14 into 5.14.2
Change-Id: I294cb27a59754f7090f9bc1a500faf0423571549
Diffstat (limited to 'src/qmlmodels/qqmltableinstancemodel.cpp')
-rw-r--r-- | src/qmlmodels/qqmltableinstancemodel.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/qmlmodels/qqmltableinstancemodel.cpp b/src/qmlmodels/qqmltableinstancemodel.cpp index 9800eb8c72..e2cecfef79 100644 --- a/src/qmlmodels/qqmltableinstancemodel.cpp +++ b/src/qmlmodels/qqmltableinstancemodel.cpp @@ -240,6 +240,25 @@ QQmlInstanceModel::ReleaseFlags QQmlTableInstanceModel::release(QObject *object, return QQmlInstanceModel::Destroyed; } +void QQmlTableInstanceModel::dispose(QObject *object) +{ + Q_ASSERT(object); + auto modelItem = qvariant_cast<QQmlDelegateModelItem *>(object->property(kModelItemTag)); + Q_ASSERT(modelItem); + + modelItem->releaseObject(); + + // The item is not referenced by anyone + Q_ASSERT(!modelItem->isObjectReferenced()); + Q_ASSERT(!modelItem->isReferenced()); + + m_modelItems.remove(modelItem->index); + + emit destroyingItem(object); + delete object; + delete modelItem; +} + void QQmlTableInstanceModel::cancel(int index) { auto modelItem = m_modelItems.value(index); |