diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-05-28 17:59:34 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-05-28 17:59:40 +0200 |
commit | 1f3c157ec6b8be5de1eb89295713c2980fb1a7aa (patch) | |
tree | b85888d73518f6abc7bbde74ab71a27887682f9d /src/imports/statemachine | |
parent | 44ca7e31ee9365a72cd17ecd335ec4d0161420a9 (diff) | |
parent | 0f5c34f2c6b64bae3429706a6c4211334c689092 (diff) |
Merge "Merge remote-tracking branch 'origin/dev' into wip/scenegraphng"wip/scenegraphng
Diffstat (limited to 'src/imports/statemachine')
-rw-r--r-- | src/imports/statemachine/signaltransition.cpp | 6 | ||||
-rw-r--r-- | src/imports/statemachine/signaltransition.h | 6 | ||||
-rw-r--r-- | src/imports/statemachine/statemachine.cpp | 13 | ||||
-rw-r--r-- | src/imports/statemachine/statemachine.h | 3 |
4 files changed, 23 insertions, 5 deletions
diff --git a/src/imports/statemachine/signaltransition.cpp b/src/imports/statemachine/signaltransition.cpp index 52dffe9004..468f2020c7 100644 --- a/src/imports/statemachine/signaltransition.cpp +++ b/src/imports/statemachine/signaltransition.cpp @@ -184,7 +184,7 @@ void SignalTransition::connectTriggered() m_signalExpression = expression; } -void SignalTransitionParser::verifyBindings(const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props) +void SignalTransitionParser::verifyBindings(const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props) { for (int ii = 0; ii < props.count(); ++ii) { const QV4::CompiledData::Binding *binding = props.at(ii); @@ -203,7 +203,9 @@ void SignalTransitionParser::verifyBindings(const QQmlRefPointer<QV4::CompiledDa } } -void SignalTransitionParser::applyBindings(QObject *object, const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &bindings) +void SignalTransitionParser::applyBindings( + QObject *object, const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, + const QList<const QV4::CompiledData::Binding *> &bindings) { SignalTransition *st = qobject_cast<SignalTransition*>(object); st->m_compilationUnit = compilationUnit; diff --git a/src/imports/statemachine/signaltransition.h b/src/imports/statemachine/signaltransition.h index 90e6f96fbc..f005c5e9b1 100644 --- a/src/imports/statemachine/signaltransition.h +++ b/src/imports/statemachine/signaltransition.h @@ -89,7 +89,7 @@ private: QJSValue m_signal; QQmlScriptString m_guard; bool m_complete; - QQmlRefPointer<QV4::CompiledData::CompilationUnit> m_compilationUnit; + QQmlRefPointer<QV4::ExecutableCompilationUnit> m_compilationUnit; QList<const QV4::CompiledData::Binding *> m_bindings; QQmlBoundSignalExpressionPointer m_signalExpression; }; @@ -97,8 +97,8 @@ private: class SignalTransitionParser : public QQmlCustomParser { public: - void verifyBindings(const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props) override; - void applyBindings(QObject *object, const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &bindings) override; + void verifyBindings(const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props) override; + void applyBindings(QObject *object, const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &bindings) override; }; QT_END_NAMESPACE diff --git a/src/imports/statemachine/statemachine.cpp b/src/imports/statemachine/statemachine.cpp index ca6c59b6ac..a983644018 100644 --- a/src/imports/statemachine/statemachine.cpp +++ b/src/imports/statemachine/statemachine.cpp @@ -51,6 +51,7 @@ StateMachine::StateMachine(QObject *parent) : QStateMachine(parent), m_completed(false), m_running(false) { connect(this, SIGNAL(runningChanged(bool)), SIGNAL(qmlRunningChanged())); + connect(this, SIGNAL(childModeChanged()), SLOT(checkChildMode())); } bool StateMachine::isRunning() const @@ -66,6 +67,15 @@ void StateMachine::setRunning(bool running) m_running = running; } +void StateMachine::checkChildMode() +{ + if (childMode() != QState::ExclusiveStates) { + qmlWarning(this) << "Setting the childMode of a StateMachine to anything else than\n" + "QState.ExclusiveStates will result in an invalid state machine,\n" + "and can lead to incorrect behavior!"; + } +} + void StateMachine::componentComplete() { if (QStateMachine::initialState() == nullptr && childMode() == QState::ExclusiveStates) @@ -129,6 +139,9 @@ QQmlListProperty<QObject> StateMachine::children() erroneous state, the machine will stop executing and an error message will be printed to the console. + \warning Setting the childMode of a StateMachine to anything else than QState::ExclusiveStates + will result in an invalid state machine, and can lead to incorrect behavior. + \clearfloat \sa QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState {The Declarative State Machine Framework} diff --git a/src/imports/statemachine/statemachine.h b/src/imports/statemachine/statemachine.h index cb0ab43f8b..1fa7a9da43 100644 --- a/src/imports/statemachine/statemachine.h +++ b/src/imports/statemachine/statemachine.h @@ -69,6 +69,9 @@ public: bool isRunning() const; void setRunning(bool running); +private Q_SLOTS: + void checkChildMode(); + Q_SIGNALS: void childrenChanged(); /*! |