aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlmodels/qqmltableinstancemodel.cpp
diff options
context:
space:
mode:
authorKari Oikarinen <kari.oikarinen@qt.io>2020-03-10 09:43:44 +0200
committerKari Oikarinen <kari.oikarinen@qt.io>2020-03-10 09:43:44 +0200
commitb67264a2644b22dc23f6a06ff48974c77cb45d84 (patch)
tree3ac6547ac4daecac92feb4d192ed0cf97f5b758a /src/qmlmodels/qqmltableinstancemodel.cpp
parentdf034c07be4828778d43a4037f89f31ac26f411d (diff)
parent92daa739ec114a0c9ae841db0459b0eff1f86cef (diff)
Merge 5.14 into 5.14.2
Diffstat (limited to 'src/qmlmodels/qqmltableinstancemodel.cpp')
-rw-r--r--src/qmlmodels/qqmltableinstancemodel.cpp19
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);