summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-08-08 10:23:04 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-15 17:25:37 +0200
commit75c649276a9bbcb2e593d6c6f78d77417dd05891 (patch)
tree2e98537cbbb23f589ea236ba8b23d1965ccbe2b5 /src
parentdf0ec196031d33850324dc5eeed2d71f61413885 (diff)
downloadqtscript-75c649276a9bbcb2e593d6c6f78d77417dd05891.tar.gz
Remove the use of the QWidgetStar metatypeid.
It is to be removed, and is obsoleted by QMetaType::PointerToQObject. By using QMetaType::PointerToQObject, we also gain the feature that all pointers to types derived from QObject return true for QScriptValue::isQObject(). Change-Id: I18392b5b6cde3a45d060c37612d987a5cf8e8f18 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'src')
-rw-r--r--src/script/api/qscriptengine.cpp14
-rw-r--r--src/script/bridge/qscriptqobject.cpp5
2 files changed, 7 insertions, 12 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 9965b3a..d96d11c 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -3130,7 +3130,6 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const
#endif
#ifndef QT_NO_QOBJECT
case QMetaType::QObjectStar:
- case QMetaType::QWidgetStar:
result = eng->newQObject(*reinterpret_cast<QObject* const *>(ptr));
break;
#endif
@@ -3138,6 +3137,11 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const
result = eng->newVariant(*reinterpret_cast<const QVariant*>(ptr));
break;
default:
+ if (QMetaType::typeFlags(type) & QMetaType::PointerToQObject) {
+ result = eng->newQObject(*reinterpret_cast<QObject* const *>(ptr));
+ break;
+ }
+
if (type == qMetaTypeId<QScriptValue>()) {
result = eng->scriptValueToJSCValue(*reinterpret_cast<const QScriptValue*>(ptr));
if (!result)
@@ -3262,14 +3266,6 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value
*reinterpret_cast<QObject* *>(ptr) = toQObject(exec, value);
return true;
} break;
- case QMetaType::QWidgetStar:
- if (isQObject(value) || value.isNull()) {
- QObject *qo = toQObject(exec, value);
- if (!qo || qo->isWidgetType()) {
- *reinterpret_cast<QWidget* *>(ptr) = reinterpret_cast<QWidget*>(qo);
- return true;
- }
- } break;
#endif
case QMetaType::QStringList:
if (isArray(value)) {
diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp
index da1e0d6..e4da978 100644
--- a/src/script/bridge/qscriptqobject.cpp
+++ b/src/script/bridge/qscriptqobject.cpp
@@ -713,18 +713,17 @@ static JSC::JSValue delegateQtMethod(JSC::ExecState *exec, QMetaMethod::MethodTy
} else if (QScriptEnginePrivate::isQObject(actual)) {
switch (tid) {
case QMetaType::QObjectStar:
- case QMetaType::QWidgetStar:
// perfect
break;
default:
- matchDistance += 10;
+ if (!(QMetaType::typeFlags(tid) & QMetaType::PointerToQObject))
+ matchDistance += 10;
break;
}
} else if (actual.isNull()) {
switch (tid) {
case QMetaType::VoidStar:
case QMetaType::QObjectStar:
- case QMetaType::QWidgetStar:
// perfect
break;
default: