diff options
author | Michael Brasser <mbrasser@ford.com> | 2018-03-20 08:35:10 -0500 |
---|---|---|
committer | Michael Brasser <michael.brasser@live.com> | 2018-03-21 13:07:21 +0000 |
commit | dc4d6293f9473c0f03c570430d08867d2d01c6e2 (patch) | |
tree | ac7bcf84144cbbd6563f9668ba24697979d61bca /src/imports | |
parent | 1a816cd8dcc3499351ce6dfb6ad3bdfb34c31ede (diff) |
Handle function expressions in SignalTransition
Extend 22b13921f8067f8a93164875a4ad59bed85b0400 to SignalTransition.
Change-Id: Ic7d03353efaa7ba894b913e5b0bc193d648d21df
Task-number: QTBUG-50328
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/statemachine/signaltransition.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/imports/statemachine/signaltransition.cpp b/src/imports/statemachine/signaltransition.cpp index 63a969c0e8..0d35e3064b 100644 --- a/src/imports/statemachine/signaltransition.cpp +++ b/src/imports/statemachine/signaltransition.cpp @@ -176,9 +176,17 @@ void SignalTransition::connectTriggered() QMetaMethod metaMethod = target->metaObject()->method(qobjectSignal->methodIndex()); int signalIndex = QMetaObjectPrivate::signalIndex(metaMethod); - QQmlBoundSignalExpression *expression = ctxtdata ? - new QQmlBoundSignalExpression(target, signalIndex, - ctxtdata, this, m_compilationUnit->runtimeFunctions[binding->value.compiledScriptIndex]) : nullptr; + auto f = m_compilationUnit->runtimeFunctions[binding->value.compiledScriptIndex]; + + // If the function is marked as having a nested function, then the user wrote: + // onSomeSignal: function() { /*....*/ } + // So take that nested function: + if (auto closure = f->nestedFunction()) + f = closure; + + QQmlBoundSignalExpression *expression = + ctxtdata ? new QQmlBoundSignalExpression(target, signalIndex, ctxtdata, this, f) + : nullptr; if (expression) expression->setNotifyOnValueChanged(false); m_signalExpression = expression; |