diff options
author | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2018-05-30 15:16:21 +0200 |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2018-06-09 16:57:51 +0000 |
commit | edc191f85bf12bf6d036b2979aa76fc3edb18dab (patch) | |
tree | b3508637d36c54c40726940807ebd964e1e03742 /src | |
parent | 6e16cd5bd8843c6dae219c5fe1493969a51198d3 (diff) |
QQmlDelegateModelPrivate: refactor release()
Change the structure a bit, so it becomes a little
less nested, and to make some "clean" space for the
patch that handles recycling if items, which will
add an extra section into this function in a
subsequent patch.
Change-Id: Ib94142827373d6894b508718f58e9f5e61e8c8e1
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/types/qqmldelegatemodel.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp index a873d3f48f..15d6bed2db 100644 --- a/src/qml/types/qqmldelegatemodel.cpp +++ b/src/qml/types/qqmldelegatemodel.cpp @@ -565,25 +565,24 @@ int QQmlDelegateModel::count() const QQmlDelegateModel::ReleaseFlags QQmlDelegateModelPrivate::release(QObject *object) { - QQmlDelegateModel::ReleaseFlags stat = nullptr; if (!object) - return stat; - - if (QQmlDelegateModelItem *cacheItem = QQmlDelegateModelItem::dataForObject(object)) { - if (cacheItem->releaseObject()) { - cacheItem->destroyObject(); - emitDestroyingItem(object); - if (cacheItem->incubationTask) { - releaseIncubator(cacheItem->incubationTask); - cacheItem->incubationTask = nullptr; - } - cacheItem->Dispose(); - stat |= QQmlInstanceModel::Destroyed; - } else { - stat |= QQmlDelegateModel::Referenced; - } + return QQmlDelegateModel::ReleaseFlags(0); + + QQmlDelegateModelItem *cacheItem = QQmlDelegateModelItem::dataForObject(object); + if (!cacheItem) + return QQmlDelegateModel::ReleaseFlags(0); + + if (!cacheItem->releaseObject()) + return QQmlDelegateModel::Referenced; + + cacheItem->destroyObject(); + emitDestroyingItem(object); + if (cacheItem->incubationTask) { + releaseIncubator(cacheItem->incubationTask); + cacheItem->incubationTask = nullptr; } - return stat; + cacheItem->Dispose(); + return QQmlInstanceModel::Destroyed; } /* |