aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsapi
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@theqtcompany.com>2015-01-12 13:07:38 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2015-01-12 19:19:35 +0100
commitf6e1e92c2ec0279c31d354f5fdf187f09223a705 (patch)
treef502a54f66cb5a769c05698ac68508e4f46c5e81 /src/qml/jsapi
parenta33879b811e1c495ce0686edb6ab3a4e3a9539c4 (diff)
Add ability to retrieve QJSEngine for a given QObject
[ChangeLog][QtQml] Added qjsEngine(QObject*) getter similar to qmlEngine(object) that allows retrieving the engine for an exposed object. Change-Id: Id14adec58d45fe58133f65bab773b07d6bc18569 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/jsapi')
-rw-r--r--src/qml/jsapi/qjsengine.cpp18
-rw-r--r--src/qml/jsapi/qjsengine.h2
2 files changed, 20 insertions, 0 deletions
diff --git a/src/qml/jsapi/qjsengine.cpp b/src/qml/jsapi/qjsengine.cpp
index c6caae2f09..831287d0b3 100644
--- a/src/qml/jsapi/qjsengine.cpp
+++ b/src/qml/jsapi/qjsengine.cpp
@@ -565,6 +565,24 @@ QQmlPropertyCache *QJSEnginePrivate::createCache(const QMetaObject *mo)
}
}
+/*!
+ \since 5.5
+ \relates QJSEngine
+
+ Returns the QJSEngine associated with \a object, if any.
+
+ This function is useful if you have exposed a QObject to the JavaScript environment
+ and later in your program would like to regain access. It does not require you to
+ keep the wrapper around that was returned from QJSEngine::newQObject().
+ */
+QJSEngine *qjsEngine(const QObject *object)
+{
+ QQmlData *data = QQmlData::get(object, false);
+ if (!data || data->jsWrapper.isNullOrUndefined())
+ return 0;
+ return data->jsWrapper.engine()->jsEngine();
+}
+
QT_END_NAMESPACE
#include "moc_qjsengine.cpp"
diff --git a/src/qml/jsapi/qjsengine.h b/src/qml/jsapi/qjsengine.h
index bddc6f133c..f24808f503 100644
--- a/src/qml/jsapi/qjsengine.h
+++ b/src/qml/jsapi/qjsengine.h
@@ -127,6 +127,8 @@ inline QVariant qjsvalue_cast<QVariant>(const QJSValue &value)
return value.toVariant();
}
+Q_QML_EXPORT QJSEngine *qjsEngine(const QObject *);
+
QT_END_NAMESPACE
#endif // QJSENGINE_H