summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2023-10-02 17:54:14 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-10-06 17:54:02 +0000
commit6e73d4e5905d524f370a1341116df47ac7e4c6ac (patch)
treec4031c474151f2835c316b03ce5e5241af590444
parentb6919ced51d7d4c910ab9864c8807edfd4056341 (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.cpp11
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();