diff options
Diffstat (limited to 'src/quick/util/qquickstate_p_p.h')
-rw-r--r-- | src/quick/util/qquickstate_p_p.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/quick/util/qquickstate_p_p.h b/src/quick/util/qquickstate_p_p.h index 2fa5321165..ae4ed291b5 100644 --- a/src/quick/util/qquickstate_p_p.h +++ b/src/quick/util/qquickstate_p_p.h @@ -244,6 +244,23 @@ public: QList<OperationGuard> *list = static_cast<QList<OperationGuard> *>(prop->data); return list->at(index); } + static void operations_replace(QQmlListProperty<QQuickStateOperation> *prop, int index, + QQuickStateOperation *op) { + QList<OperationGuard> *list = static_cast<QList<OperationGuard> *>(prop->data); + auto &guard = list->at(index); + if (guard.object() == op) { + op->setState(qobject_cast<QQuickState*>(prop->object)); + } else { + list->at(index)->setState(nullptr); + op->setState(qobject_cast<QQuickState*>(prop->object)); + list->replace(index, OperationGuard(op, list)); + } + } + static void operations_removeLast(QQmlListProperty<QQuickStateOperation> *prop) { + QList<OperationGuard> *list = static_cast<QList<OperationGuard> *>(prop->data); + list->last()->setState(nullptr); + list->removeLast(); + } QQuickTransitionManager transitionManager; |