diff options
author | Michael Brasser <mbrasser@ford.com> | 2015-12-31 12:54:20 -0600 |
---|---|---|
committer | Michael Brasser <michael.brasser@live.com> | 2016-01-19 14:54:12 +0000 |
commit | 63652419b6098665aafb17f1175524685d504e24 (patch) | |
tree | da5a37fbcae1d529ee34a68232f926466352d138 /src/qml/qml | |
parent | 7c9e51e7e7b358fb9c4829ee8f02918ec4cfd016 (diff) |
Provide access to signal parameters in SignalTransition::onTriggered.
Change-Id: Ib74d3f5e9a357a86b818e27dd7249e2ecdf1e513
Task-number: QTBUG-46897
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/qml/qml')
-rw-r--r-- | src/qml/qml/qqmlboundsignal.cpp | 22 | ||||
-rw-r--r-- | src/qml/qml/qqmlboundsignal_p.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp index 477a517e32..6d8f883e4c 100644 --- a/src/qml/qml/qqmlboundsignal.cpp +++ b/src/qml/qml/qqmlboundsignal.cpp @@ -239,6 +239,28 @@ void QQmlBoundSignalExpression::evaluate(void **a) ep->dereferenceScarceResources(); // "release" scarce resources if top-level expression evaluation is complete. } +void QQmlBoundSignalExpression::evaluate(const QList<QVariant> &args) +{ + Q_ASSERT (context() && engine()); + + if (!expressionFunctionValid()) + return; + + QQmlEnginePrivate *ep = QQmlEnginePrivate::get(engine()); + QV4::Scope scope(ep->v4engine()); + + ep->referenceScarceResources(); // "hold" scarce resources in memory during evaluation. + + QV4::ScopedCallData callData(scope, args.count()); + for (int ii = 0; ii < args.count(); ++ii) { + callData->args[ii] = scope.engine->fromVariant(args[ii]); + } + + QQmlJavaScriptExpression::evaluate(callData, 0); + + ep->dereferenceScarceResources(); // "release" scarce resources if top-level expression evaluation is complete. +} + //////////////////////////////////////////////////////////////////////// diff --git a/src/qml/qml/qqmlboundsignal_p.h b/src/qml/qml/qqmlboundsignal_p.h index 3742317484..147752882d 100644 --- a/src/qml/qml/qqmlboundsignal_p.h +++ b/src/qml/qml/qqmlboundsignal_p.h @@ -78,6 +78,7 @@ public: // evaluation of a bound signal expression doesn't return any value void evaluate(void **a); + void evaluate(const QList<QVariant> &args); QQmlSourceLocation sourceLocation() const; QString expression() const; |