diff options
-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(); |