diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/scxml/qscxmlstatemachine.cpp | 18 | ||||
-rw-r--r-- | src/scxml/qscxmlstatemachine.h | 1 | ||||
-rw-r--r-- | src/scxml/qscxmlstatemachine_p.h | 1 | ||||
-rw-r--r-- | src/scxml/qscxmlstatemachineinfo.cpp | 4 |
5 files changed, 16 insertions, 10 deletions
diff --git a/.qmake.conf b/.qmake.conf index 230f0b6..360e9de 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,4 +2,4 @@ load(qt_build_config) CONFIG += qt_example_installs CONFIG += warning_clean -MODULE_VERSION = 5.13.1 +MODULE_VERSION = 5.14.0 diff --git a/src/scxml/qscxmlstatemachine.cpp b/src/scxml/qscxmlstatemachine.cpp index b7431ba..23f8a71 100644 --- a/src/scxml/qscxmlstatemachine.cpp +++ b/src/scxml/qscxmlstatemachine.cpp @@ -768,6 +768,7 @@ void QScxmlStateMachinePrivate::attach(QScxmlStateMachineInfo *info) void QScxmlStateMachinePrivate::updateMetaCache() { m_stateIndexToSignalIndex.clear(); + m_stateNameToSignalIndex.clear(); if (!m_tableData) return; @@ -776,10 +777,14 @@ void QScxmlStateMachinePrivate::updateMetaCache() return; int signalIndex = 0; + const int methodOffset = QMetaObjectPrivate::signalOffset(m_metaObject); for (int i = 0; i < m_stateTable->stateCount; ++i) { const auto &s = m_stateTable->state(i); if (!s.isHistoryState() && s.type != StateTable::State::Invalid) { m_stateIndexToSignalIndex.insert(i, signalIndex); + m_stateNameToSignalIndex.insert(m_tableData->string(s.name), + signalIndex + methodOffset); + ++signalIndex; } } @@ -1095,7 +1100,8 @@ void QScxmlStateMachinePrivate::exitStates(const OrderedSet &enabledTransitions) if (m_infoSignalProxy) { emit m_infoSignalProxy->statesExited( - QVector<QScxmlStateMachineInfo::StateId>::fromStdVector(statesToExitSorted)); + QVector<QScxmlStateMachineInfo::StateId>(statesToExitSorted.begin(), + statesToExitSorted.end())); } } @@ -1126,8 +1132,8 @@ void QScxmlStateMachinePrivate::executeTransitionContent(const OrderedSet &enabl if (m_infoSignalProxy) { emit m_infoSignalProxy->transitionsTriggered( - QVector<QScxmlStateMachineInfo::TransitionId>::fromStdVector( - enabledTransitions.list())); + QVector<QScxmlStateMachineInfo::TransitionId>(enabledTransitions.list().begin(), + enabledTransitions.list().end())); } } @@ -1190,7 +1196,8 @@ void QScxmlStateMachinePrivate::enterStates(const OrderedSet &enabledTransitions emitStateActive(s, true); if (m_infoSignalProxy) { emit m_infoSignalProxy->statesEntered( - QVector<QScxmlStateMachineInfo::StateId>::fromStdVector(sortedStates)); + QVector<QScxmlStateMachineInfo::StateId>(sortedStates.begin(), + sortedStates.end())); } } @@ -1907,8 +1914,7 @@ QMetaObject::Connection QScxmlStateMachine::connectToStateImpl(const QString &sc types = QtPrivate::ConnectionTypes<QtPrivate::List<bool> >::types(); Q_D(QScxmlStateMachine); - int signalIndex = QScxmlInternal::signalIndex(d->m_metaObject, - scxmlStateName.toUtf8() + "Changed(bool)"); + const int signalIndex = d->m_stateNameToSignalIndex.value(scxmlStateName); return signalIndex < 0 ? QMetaObject::Connection() : QObjectPrivate::connectImpl(this, signalIndex, receiver, slot, slotObj, type, types, d->m_metaObject); diff --git a/src/scxml/qscxmlstatemachine.h b/src/scxml/qscxmlstatemachine.h index 090a1b6..a0a4e8b 100644 --- a/src/scxml/qscxmlstatemachine.h +++ b/src/scxml/qscxmlstatemachine.h @@ -41,7 +41,6 @@ #define QSCXMLSTATEMACHINE_H #include <QtScxml/qscxmldatamodel.h> -#include <QtScxml/qscxmlexecutablecontent.h> #include <QtScxml/qscxmlerror.h> #include <QtScxml/qscxmlevent.h> #include <QtScxml/qscxmlcompiler.h> diff --git a/src/scxml/qscxmlstatemachine_p.h b/src/scxml/qscxmlstatemachine_p.h index aa08f1c..1c354fa 100644 --- a/src/scxml/qscxmlstatemachine_p.h +++ b/src/scxml/qscxmlstatemachine_p.h @@ -382,6 +382,7 @@ private: QScxmlInternal::StateMachineInfoProxy *m_infoSignalProxy; QHash<int, int> m_stateIndexToSignalIndex; + QHash<QString, int> m_stateNameToSignalIndex; }; QT_END_NAMESPACE diff --git a/src/scxml/qscxmlstatemachineinfo.cpp b/src/scxml/qscxmlstatemachineinfo.cpp index d81956a..4fbbecf 100644 --- a/src/scxml/qscxmlstatemachineinfo.cpp +++ b/src/scxml/qscxmlstatemachineinfo.cpp @@ -242,8 +242,8 @@ QVector<QString> QScxmlStateMachineInfo::transitionEvents(TransitionId transitio QVector<QScxmlStateMachineInfo::StateId> QScxmlStateMachineInfo::configuration() const { Q_D(const QScxmlStateMachineInfo); - - return QVector<StateId>::fromStdVector(d->stateMachinePrivate()->configuration().list()); + const auto &list = d->stateMachinePrivate()->configuration().list(); + return QVector<StateId>(list.cbegin(), list.cend()); } QT_END_NAMESPACE |