summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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();