diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2023-10-02 17:54:14 +0200 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2023-10-06 11:12:56 +0000 |
commit | 9f5e13842d624f75ff059a29e763d02a07829971 (patch) | |
tree | f1a980d6c303f982e4814729c42beb102f7817bc | |
parent | 82a78f8e731aa050b307be051a1ece5f209dc7a3 (diff) |
QScxmlInvokedServices: fix binding loops
By using (set)ValueBypassingBindings() in the property setter.
Task-number: QTBUG-116542
Pick-to: 6.5
Change-Id: I21cf04b43e1c1e912117ad5e4cbec9e9f1a68f43
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
(cherry picked from commit 48a4f0007b91a5fd562823b6d28317e0580b142c)
-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(); |