diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2023-10-02 17:54:14 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-10-06 17:54:02 +0000 |
commit | 6e73d4e5905d524f370a1341116df47ac7e4c6ac (patch) | |
tree | c4031c474151f2835c316b03ce5e5241af590444 | |
parent | b6919ced51d7d4c910ab9864c8807edfd4056341 (diff) |
QScxmlInvokedServices: fix binding loops
By using (set)ValueBypassingBindings() in the property setter.
Task-number: QTBUG-116542
Change-Id: I21cf04b43e1c1e912117ad5e4cbec9e9f1a68f43
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
(cherry picked from commit 48a4f0007b91a5fd562823b6d28317e0580b142c)
(cherry picked from commit 9f5e13842d624f75ff059a29e763d02a07829971)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/scxmlqml/invokedservices.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/scxmlqml/invokedservices.cpp b/src/scxmlqml/invokedservices.cpp index 8d15320..acbab39 100644 --- a/src/scxmlqml/invokedservices.cpp +++ b/src/scxmlqml/invokedservices.cpp @@ -69,17 +69,16 @@ QScxmlStateMachine *QScxmlInvokedServices::stateMachine() const void QScxmlInvokedServices::setStateMachine(QScxmlStateMachine *stateMachine) { - if (stateMachine == m_stateMachine.value()) { - m_stateMachine.removeBindingUnlessInWrapper(); + m_stateMachine.removeBindingUnlessInWrapper(); + if (stateMachine == m_stateMachine.valueBypassingBindings()) return; - } QObject::disconnect(m_serviceConnection); - m_stateMachine = stateMachine; + m_stateMachine.setValueBypassingBindings(stateMachine); - if (m_stateMachine.value()) { + if (stateMachine) { m_serviceConnection = QObject::connect( - m_stateMachine.value(), &QScxmlStateMachine::invokedServicesChanged, + stateMachine, &QScxmlStateMachine::invokedServicesChanged, [this](){ m_children.notify(); emit childrenChanged(); |