diff options
author | Stephen Kelly <stephen.kelly@kdab.com> | 2012-08-08 10:23:04 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-15 17:25:37 +0200 |
commit | 75c649276a9bbcb2e593d6c6f78d77417dd05891 (patch) | |
tree | 2e98537cbbb23f589ea236ba8b23d1965ccbe2b5 /src | |
parent | df0ec196031d33850324dc5eeed2d71f61413885 (diff) | |
download | qtscript-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.cpp | 14 | ||||
-rw-r--r-- | src/script/bridge/qscriptqobject.cpp | 5 |
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: |