Implement QJSValue::toQObject and isQObject
authorLars Knoll <lars.knoll@digia.com>
Sun, 2 Jun 2013 21:25:52 +0000 (23:25 +0200)
committerSimon Hausmann <simon.hausmann@digia.com>
Mon, 3 Jun 2013 05:06:10 +0000 (07:06 +0200)
Change-Id: I03c4dc285039503762c65936a7e66714754ea2e1
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/qml/qml/v8/qjsengine.cpp
src/qml/qml/v8/qjsvalue.cpp

index e23c56a..da214a0 100644 (file)
@@ -317,7 +317,6 @@ QJSValue QJSEngine::newArray(uint length)
 */
 QJSValue QJSEngine::newQObject(QObject *object)
 {
-    // ###
     Q_D(QJSEngine);
     return new QJSValuePrivate(QV8Engine::getV4(d), d->newQObject(object, QV8Engine::JavaScriptOwnership));
 }
index 7a1b794..32fd249 100644 (file)
@@ -53,6 +53,7 @@
 #include "qv4v8_p.h"
 #include "qv4variantobject_p.h"
 #include "qv4regexpobject_p.h"
+#include "qv8engine_p.h"
 
 /*!
   \since 5.0
@@ -924,8 +925,12 @@ bool QJSValue::hasOwnProperty(const QString &name) const
  */
 QObject *QJSValue::toQObject() const
 {
-    // ###
-    return 0;
+    Object *o = d->value.asObject();
+    if (!o)
+        return 0;
+
+    QV8Engine *v8 = d->engine()->publicEngine->handle();
+    return v8->toQObject(d->value);
 }
 
 /*!
@@ -974,8 +979,12 @@ bool QJSValue::isRegExp() const
 */
 bool QJSValue::isQObject() const
 {
-    // ###
-    return false;
+    Object *o = d->value.asObject();
+    if (!o)
+        return false;
+
+    QV8Engine *v8 = d->engine()->publicEngine->handle();
+    return v8->isQObject(d->value);
 }
 
 QT_END_NAMESPACE