From 9f5e13842d624f75ff059a29e763d02a07829971 Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Mon, 2 Oct 2023 17:54:14 +0200 Subject: 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 (cherry picked from commit 48a4f0007b91a5fd562823b6d28317e0580b142c) --- src/scxmlqml/invokedservices.cpp | 11 +++++------ 1 file 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(); -- cgit v1.2.3