summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--src/scxml/qscxmlstatemachine.cpp18
-rw-r--r--src/scxml/qscxmlstatemachine.h1
-rw-r--r--src/scxml/qscxmlstatemachine_p.h1
-rw-r--r--src/scxml/qscxmlstatemachineinfo.cpp4
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