summaryrefslogtreecommitdiffstats
path: root/src/script/api/qscriptengine.cpp
diff options
context:
space:
mode:
authorBea Lam <bea.lam@nokia.com>2010-03-05 03:51:10 (GMT)
committerBea Lam <bea.lam@nokia.com>2010-03-05 03:51:10 (GMT)
commit48fd47f64f3f73e82016161d82cdf67908a9c653 (patch)
treee337d89e525d3a55d2b9aca8c19d2b3b43c65c50 /src/script/api/qscriptengine.cpp
parenta7b46bda37a428ae2e5554aa8e58469c92b310a9 (diff)
parentc9b3309ae1d3a34790d71fdfd7dcaab79433f049 (diff)
downloadQt-48fd47f64f3f73e82016161d82cdf67908a9c653.zip
Qt-48fd47f64f3f73e82016161d82cdf67908a9c653.tar.gz
Qt-48fd47f64f3f73e82016161d82cdf67908a9c653.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7
Conflicts: tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r--src/script/api/qscriptengine.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 9cd5c63..024b4d0 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -1591,7 +1591,9 @@ QRegExp QScriptEnginePrivate::toRegExp(JSC::ExecState *exec, JSC::JSValue value)
QVariant QScriptEnginePrivate::toVariant(JSC::ExecState *exec, JSC::JSValue value)
{
- if (isObject(value)) {
+ if (!value) {
+ return QVariant();
+ } else if (isObject(value)) {
if (isVariant(value))
return variantValue(value);
#ifndef QT_NO_QOBJECT
@@ -2901,6 +2903,9 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const
result = eng->newQObject(*reinterpret_cast<QObject* const *>(ptr));
break;
#endif
+ case QMetaType::QVariant:
+ result = jscValueFromVariant(exec, *reinterpret_cast<const QVariant*>(ptr));
+ break;
default:
if (type == qMetaTypeId<QScriptValue>()) {
result = eng->scriptValueToJSCValue(*reinterpret_cast<const QScriptValue*>(ptr));
@@ -2922,8 +2927,6 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const
else {
QByteArray typeName = QMetaType::typeName(type);
- if (typeName == "QVariant")
- result = jscValueFromVariant(exec, *reinterpret_cast<const QVariant*>(ptr));
if (typeName.endsWith('*') && !*reinterpret_cast<void* const *>(ptr))
return JSC::jsNull();
else
@@ -3046,6 +3049,9 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value
*reinterpret_cast<QVariantMap *>(ptr) = variantMapFromObject(exec, value);
return true;
} break;
+ case QMetaType::QVariant:
+ *reinterpret_cast<QVariant*>(ptr) = toVariant(exec, value);
+ return true;
default:
;
}
@@ -3096,9 +3102,6 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value
return false;
*reinterpret_cast<QScriptValue*>(ptr) = eng->scriptValueFromJSCValue(value);
return true;
- } else if (name == "QVariant") {
- *reinterpret_cast<QVariant*>(ptr) = toVariant(exec, value);
- return true;
}
// lazy registration of some common list types