QmlDesigner: Add "on" to signal handler

Fix missing "on" for signal handlers generated via the context menu.

Task-number: QDS-11626
Change-Id: Ide32bfdddf4ee16e650e0adac9fbb3fda9694f3b
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
This commit is contained in:
Henning Gruendl
2024-01-15 13:19:35 +01:00
committed by Henning Gründl
parent 8d5b3b4ad6
commit afdf82a6c1

View File

@@ -309,6 +309,13 @@ ModelNode ConnectionModel::getTargetNodeForConnection(const ModelNode &connectio
static QString addOnToSignalName(const QString &signal) static QString addOnToSignalName(const QString &signal)
{ {
if (signal.isEmpty())
return {};
static const QRegularExpression rx("^on[A-Z]");
if (rx.match(signal).hasMatch())
return signal;
QString ret = signal; QString ret = signal;
ret[0] = ret.at(0).toUpper(); ret[0] = ret.at(0).toUpper();
ret.prepend("on"); ret.prepend("on");
@@ -361,11 +368,10 @@ void ConnectionModel::addConnection(const PropertyName &signalName)
ModelNode selectedNode = connectionView()->selectedModelNodes().constFirst(); ModelNode selectedNode = connectionView()->selectedModelNodes().constFirst();
PropertyName signalHandlerName = signalName; PropertyName signalHandlerName = signalName;
if (signalHandlerName.isEmpty()) { if (signalHandlerName.isEmpty())
signalHandlerName = addOnToSignalName(QString::fromUtf8(getFirstSignalForTarget( signalHandlerName = getFirstSignalForTarget(selectedNode.metaInfo());
selectedNode.metaInfo())))
.toUtf8(); signalHandlerName = addOnToSignalName(QString::fromUtf8(signalHandlerName)).toUtf8();
}
connectionView() connectionView()
->executeInTransaction("ConnectionModel::addConnection", [=, &rootModelNode]() { ->executeInTransaction("ConnectionModel::addConnection", [=, &rootModelNode]() {
@@ -855,7 +861,7 @@ int ConnectionModelBackendDelegate::currentRow() const
return m_currentRow; return m_currentRow;
} }
QString removeOnFromSignalName(const QString &signal) static QString removeOnFromSignalName(const QString &signal)
{ {
if (signal.isEmpty()) if (signal.isEmpty())
return {}; return {};