summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2023-10-02 17:54:14 +0200
committerIvan Solovev <ivan.solovev@qt.io>2023-10-06 11:12:56 +0000
commit9f5e13842d624f75ff059a29e763d02a07829971 (patch)
treef1a980d6c303f982e4814729c42beb102f7817bc
parent82a78f8e731aa050b307be051a1ece5f209dc7a3 (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.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();