qtscriptclassic_qt5.patch From: Christian Prochaska --- src/qscriptcontextinfo.cpp | 2 - src/qscriptecmafunction.cpp | 12 ++++----- src/qscriptengine_p.cpp | 30 ++++++++++++++-------- src/qscriptextqobject.cpp | 52 +++++++++++++++++--------------------- src/qscriptstring.cpp | 1 - src/qscriptsyntaxcheckresult_p.h | 2 + src/qscriptvalue.cpp | 4 +-- src/qscriptvalue.h | 4 +-- src/qscriptvalue_p.h | 1 - src/qscriptvalueimpl_p.h | 3 +- 10 files changed, 55 insertions(+), 56 deletions(-) diff --git a/src/qscriptcontextinfo.cpp b/src/qscriptcontextinfo.cpp index ef080ff..df0e555 100644 --- a/src/qscriptcontextinfo.cpp +++ b/src/qscriptcontextinfo.cpp @@ -108,7 +108,6 @@ QT_BEGIN_NAMESPACE QScriptContextInfoPrivate::QScriptContextInfoPrivate() : q_ptr(0) { - ref = 0; functionType = QScriptContextInfo::NativeFunction; functionMetaIndex = -1; functionStartLineNumber = -1; @@ -125,7 +124,6 @@ QScriptContextInfoPrivate::QScriptContextInfoPrivate(const QScriptContext *conte : q_ptr(0) { Q_ASSERT(context); - ref = 0; functionType = QScriptContextInfo::NativeFunction; functionMetaIndex = -1; functionStartLineNumber = -1; diff --git a/src/qscriptecmafunction.cpp b/src/qscriptecmafunction.cpp index 7ba4596..fade83f 100644 --- a/src/qscriptecmafunction.cpp +++ b/src/qscriptecmafunction.cpp @@ -328,7 +328,7 @@ QScriptValueImpl Function::method_disconnect(QScriptContextPrivate *context, QSc return context->throwError(QScriptContext::TypeError, QString::fromLatin1("Function.prototype.disconnect: %0::%1 is not a signal") .arg(QLatin1String(qtSignal->metaObject()->className())) - .arg(QLatin1String(sig.signature()))); + .arg(QLatin1String(sig.methodSignature()))); } QScriptValueImpl receiver; @@ -357,7 +357,7 @@ QScriptValueImpl Function::method_disconnect(QScriptContextPrivate *context, QSc return context->throwError( QString::fromLatin1("Function.prototype.disconnect: failed to disconnect from %0::%1") .arg(QLatin1String(qtSignal->metaObject()->className())) - .arg(QLatin1String(sig.signature()))); + .arg(QLatin1String(sig.methodSignature()))); } return eng->undefinedValue(); #else @@ -399,20 +399,20 @@ QScriptValueImpl Function::method_connect(QScriptContextPrivate *context, QScrip return context->throwError(QScriptContext::TypeError, QString::fromLatin1("Function.prototype.connect: %0::%1 is not a signal") .arg(QLatin1String(qtSignal->metaObject()->className())) - .arg(QLatin1String(sig.signature()))); + .arg(QLatin1String(sig.methodSignature()))); } { QList overloads = qtSignal->overloadedIndexes(); if (!overloads.isEmpty()) { overloads.append(qtSignal->initialIndex()); - QByteArray signature = sig.signature(); + QByteArray signature = sig.methodSignature(); QString message = QString::fromLatin1("Function.prototype.connect: ambiguous connect to %0::%1(); candidates are\n") .arg(QLatin1String(qtSignal->metaObject()->className())) .arg(QLatin1String(signature.left(signature.indexOf('(')))); for (int i = 0; i < overloads.size(); ++i) { QMetaMethod mtd = meta->method(overloads.at(i)); - message.append(QString::fromLatin1(" %0\n").arg(QString::fromLatin1(mtd.signature()))); + message.append(QString::fromLatin1(" %0\n").arg(QString::fromLatin1(mtd.methodSignature()))); } message.append(QString::fromLatin1("Use e.g. object['%0'].connect() to connect to a particular overload") .arg(QLatin1String(signature))); @@ -446,7 +446,7 @@ QScriptValueImpl Function::method_connect(QScriptContextPrivate *context, QScrip return context->throwError( QString::fromLatin1("Function.prototype.connect: failed to connect to %0::%1") .arg(QLatin1String(qtSignal->metaObject()->className())) - .arg(QLatin1String(sig.signature()))); + .arg(QLatin1String(sig.methodSignature()))); } return eng->undefinedValue(); #else diff --git a/src/qscriptengine_p.cpp b/src/qscriptengine_p.cpp index d36b605..4e9076d 100644 --- a/src/qscriptengine_p.cpp +++ b/src/qscriptengine_p.cpp @@ -1436,7 +1436,6 @@ QScriptValueImpl QScriptEnginePrivate::create(int type, const void *ptr) #endif #ifndef QT_NO_QOBJECT case QMetaType::QObjectStar: - case QMetaType::QWidgetStar: newQObject(&result, *reinterpret_cast(ptr)); break; #endif @@ -1448,6 +1447,10 @@ QScriptValueImpl QScriptEnginePrivate::create(int type, const void *ptr) } #ifndef QT_NO_QOBJECT + else if (type == qMetaTypeId()) { + newQObject(&result, *reinterpret_cast(ptr)); + } + // lazy registration of some common list types else if (type == qMetaTypeId()) { qScriptRegisterSequenceMetaType(q); @@ -1563,14 +1566,6 @@ bool QScriptEnginePrivate::convert(const QScriptValueImpl &value, *reinterpret_cast(ptr) = value.toQObject(); return true; } break; - case QMetaType::QWidgetStar: - if (value.isQObject() || value.isNull()) { - QObject *qo = value.toQObject(); - if (!qo || qo->isWidgetType()) { - *reinterpret_cast(ptr) = reinterpret_cast(qo); - return true; - } - } break; #endif case QMetaType::QStringList: if (value.isArray()) { @@ -1588,6 +1583,17 @@ bool QScriptEnginePrivate::convert(const QScriptValueImpl &value, return true; } break; default: +#ifndef QT_NO_QOBJECT + if (type == qMetaTypeId()) { + if (value.isQObject() || value.isNull()) { + QObject *qo = value.toQObject(); + if (!qo || qo->isWidgetType()) { + *reinterpret_cast(ptr) = reinterpret_cast(qo); + return true; + } + } + } +#endif ; } @@ -2609,6 +2615,7 @@ static QScriptValueImpl qsTranslate(QScriptContextPrivate *ctx, QScriptEnginePri QString comment; if (ctx->argumentCount() > 2) comment = ctx->argument(2).toString(); +#if 0 QCoreApplication::Encoding encoding = QCoreApplication::CodecForTr; if (ctx->argumentCount() > 3) { QString encStr = ctx->argument(3).toString(); @@ -2619,6 +2626,7 @@ static QScriptValueImpl qsTranslate(QScriptContextPrivate *ctx, QScriptEnginePri else return ctx->throwError(QString::fromLatin1("qsTranslate(): invalid encoding '%s'").arg(encStr)); } +#endif int n = -1; if (ctx->argumentCount() > 4) n = ctx->argument(4).toInt32(); @@ -2628,7 +2636,7 @@ static QScriptValueImpl qsTranslate(QScriptContextPrivate *ctx, QScriptEnginePri result = QCoreApplication::translate(context.toLatin1().constData(), text.toLatin1().constData(), comment.toLatin1().constData(), - encoding, n); + n); #else result = text; #endif @@ -2669,7 +2677,7 @@ static QScriptValueImpl qsTr(QScriptContextPrivate *ctx, QScriptEnginePrivate *e result = QCoreApplication::translate(context.toLatin1().constData(), text.toLatin1().constData(), comment.toLatin1().constData(), - QCoreApplication::CodecForTr, n); + n); #else result = text; #endif diff --git a/src/qscriptextqobject.cpp b/src/qscriptextqobject.cpp index 06db925..cbf4e2a 100644 --- a/src/qscriptextqobject.cpp +++ b/src/qscriptextqobject.cpp @@ -98,9 +98,9 @@ namespace QScript { class QObjectNotifyCaller : public QObject { public: - void callConnectNotify(const char *signal) + void callConnectNotify(const QMetaMethod &signal) { connectNotify(signal); } - void callDisconnectNotify(const char *signal) + void callDisconnectNotify(const QMetaMethod &signal) { disconnectNotify(signal); } }; @@ -135,7 +135,7 @@ public: static inline QByteArray methodName(const QMetaMethod &method) { - QByteArray signature = method.signature(); + QByteArray signature = method.methodSignature(); return signature.left(signature.indexOf('(')); } @@ -555,22 +555,22 @@ static void callQtMethod(QScriptContextPrivate *context, QMetaMethod::MethodType } else if (actual.isQObject()) { switch (tid) { case QMetaType::QObjectStar: - case QMetaType::QWidgetStar: // perfect break; default: - matchDistance += 10; + if (tid != qMetaTypeId()) + matchDistance += 10; break; } } else if (actual.isNull()) { switch (tid) { case QMetaType::VoidStar: case QMetaType::QObjectStar: - case QMetaType::QWidgetStar: // perfect break; default: - if (!argType.name().endsWith('*')) + if (!argType.name().endsWith('*') && + (tid != qMetaTypeId())) matchDistance += 10; break; } @@ -647,7 +647,7 @@ static void callQtMethod(QScriptContextPrivate *context, QMetaMethod::MethodType if (i > 0) message += QLatin1String("\n"); QMetaMethod mtd = metaMethod(meta, callType, conversionFailed.at(i)); - message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.signature())); + message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.methodSignature())); } result = context->throwError(QScriptContext::TypeError, message); } else if (!unresolved.isEmpty()) { @@ -674,7 +674,7 @@ static void callQtMethod(QScriptContextPrivate *context, QMetaMethod::MethodType if (i > 0) message += QLatin1String("\n"); QMetaMethod mtd = metaMethod(meta, callType, tooFewArgs.at(i)); - message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.signature())); + message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.methodSignature())); } result = context->throwError(QScriptContext::SyntaxError, message); } @@ -691,7 +691,7 @@ static void callQtMethod(QScriptContextPrivate *context, QMetaMethod::MethodType if (i > 0) message += QLatin1String("\n"); QMetaMethod mtd = metaMethod(meta, callType, candidates.at(i).index); - message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.signature())); + message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.methodSignature())); } result = context->throwError(QScriptContext::TypeError, message); } else { @@ -847,7 +847,7 @@ bool ExtQObjectDataIterator::hasNext() const for ( ; i < meta->methodCount(); ++i) { QMetaMethod method = meta->method(i); if (hasMethodAccess(method, i, inst->options) - && !isObjectProperty(m_object, method.signature())) { + && !isObjectProperty(m_object, method.methodSignature())) { return true; } } @@ -909,9 +909,9 @@ void ExtQObjectDataIterator::next(QScript::Member *member) for ( ; i < meta->methodCount(); ++i) { QMetaMethod method = meta->method(i); if (hasMethodAccess(method, i, inst->options) - && !isObjectProperty(m_object, method.signature())) { + && !isObjectProperty(m_object, method.methodSignature())) { QMetaMethod method = meta->method(i); - QScriptNameIdImpl *nameId = eng->nameId(QLatin1String(method.signature())); + QScriptNameIdImpl *nameId = eng->nameId(QLatin1String(method.methodSignature())); member->native(nameId, i, QScriptValue::QObjectMember | METHOD_ID); @@ -941,7 +941,7 @@ bool ExtQObjectDataIterator::hasPrevious() const for ( ; i >= limit; --i) { QMetaMethod method = meta->method(i); if (hasMethodAccess(method, i, inst->options) - && !isObjectProperty(m_object, method.signature())) { + && !isObjectProperty(m_object, method.methodSignature())) { return true; } } @@ -993,9 +993,9 @@ void ExtQObjectDataIterator::previous(QScript::Member *member) for ( ; i >= limit; --i) { QMetaMethod method = meta->method(i); if (hasMethodAccess(method, i, inst->options) - && !isObjectProperty(m_object, method.signature())) { + && !isObjectProperty(m_object, method.methodSignature())) { QMetaMethod method = meta->method(i); - QScriptNameIdImpl *nameId = eng->nameId(QLatin1String(method.signature())); + QScriptNameIdImpl *nameId = eng->nameId(QLatin1String(method.methodSignature())); member->native(nameId, i, QScriptValue::QObjectMember | METHOD_ID); @@ -1508,7 +1508,7 @@ QScriptValueImpl QScript::ExtQObject::method_findChild(QScriptContextPrivate *co if (Instance *instance = Instance::get(context->thisObject(), classInfo)) { QObject *obj = instance->value; QString name = context->argument(0).toString(); - QObject *child = qFindChild(obj, name); + QObject *child = obj->findChild(name); QScriptEngine::QObjectWrapOptions opt = QScriptEngine::PreferExistingWrapperObject; QScriptValueImpl result; eng->newQObject(&result, child, QScriptEngine::QtOwnership, opt); @@ -1526,12 +1526,12 @@ QScriptValueImpl QScript::ExtQObject::method_findChildren(QScriptContextPrivate #ifndef QT_NO_REGEXP if (arg.isRegExp()) { QRegExp re = arg.toRegExp(); - found = qFindChildren(obj, re); + found = obj->findChildren(re); } else #endif { QString name = arg.isUndefined() ? QString() : arg.toString(); - found = qFindChildren(obj, name); + found = obj->findChildren(name); } QScriptValueImpl result = eng->newArray(found.size()); QScriptEngine::QObjectWrapOptions opt = QScriptEngine::PreferExistingWrapperObject; @@ -1582,7 +1582,7 @@ static const char qt_meta_stringdata_QObjectConnectionManager[] = { }; const QMetaObject QScript::QObjectConnectionManager::staticMetaObject = { - { &QObject::staticMetaObject, qt_meta_stringdata_QObjectConnectionManager, + { &QObject::staticMetaObject, reinterpret_cast(qt_meta_stringdata_QObjectConnectionManager), qt_meta_data_QObjectConnectionManager, 0 } }; @@ -1684,7 +1684,7 @@ void QScript::QObjectConnectionManager::execute(int slotIndex, void **argv) } else { qWarning("QScriptEngine: Unable to handle unregistered datatype '%s' " "when invoking handler of signal %s::%s", - typeName.constData(), meta->className(), method.signature()); + typeName.constData(), meta->className(), method.methodSignature().constData()); actual = eng->undefinedValue(); } } else { @@ -1758,10 +1758,7 @@ bool QScript::QObjectConnectionManager::addSignalHandler( if (ok) { cs.append(QScript::QObjectConnection(m_slotCounter++, receiver, function, senderWrapper)); QMetaMethod signal = sender->metaObject()->method(signalIndex); - QByteArray signalString; - signalString.append('2'); // signal code - signalString.append(signal.signature()); - static_cast(sender)->callConnectNotify(signalString); + static_cast(sender)->callConnectNotify(signal); } return ok; } @@ -1782,10 +1779,7 @@ bool QScript::QObjectConnectionManager::removeSignalHandler( if (ok) { cs.remove(i); QMetaMethod signal = sender->metaObject()->method(signalIndex); - QByteArray signalString; - signalString.append('2'); // signal code - signalString.append(signal.signature()); - static_cast(sender)->callDisconnectNotify(signalString); + static_cast(sender)->callDisconnectNotify(signal); } return ok; } diff --git a/src/qscriptstring.cpp b/src/qscriptstring.cpp index 1ed7f33..2436061 100644 --- a/src/qscriptstring.cpp +++ b/src/qscriptstring.cpp @@ -88,7 +88,6 @@ QT_BEGIN_NAMESPACE QScriptStringPrivate::QScriptStringPrivate() : nameId(0), engine(0), q_ptr(0) { - ref = 0; } /*! diff --git a/src/qscriptsyntaxcheckresult_p.h b/src/qscriptsyntaxcheckresult_p.h index bd6ef51..ed32383 100644 --- a/src/qscriptsyntaxcheckresult_p.h +++ b/src/qscriptsyntaxcheckresult_p.h @@ -72,7 +72,7 @@ QT_BEGIN_NAMESPACE class QScriptSyntaxCheckResultPrivate { public: - QScriptSyntaxCheckResultPrivate() { ref = 0; } + QScriptSyntaxCheckResultPrivate() {} ~QScriptSyntaxCheckResultPrivate() {} QScriptSyntaxCheckResult::State state; diff --git a/src/qscriptvalue.cpp b/src/qscriptvalue.cpp index 7fa655e..5d3d875 100644 --- a/src/qscriptvalue.cpp +++ b/src/qscriptvalue.cpp @@ -347,7 +347,7 @@ QScriptValue::QScriptValue(QScriptEngine *engine, const char *val) if (engine) { QScriptValueImpl v; QScriptEnginePrivate *eng_p = QScriptEnginePrivate::get(engine); - eng_p->newString(&v, QString::fromAscii(val)); + eng_p->newString(&v, QString::fromLatin1(val)); d_ptr = eng_p->registerValue(v); d_ptr->ref.ref(); } else { @@ -453,7 +453,7 @@ QScriptValue::QScriptValue(const char *value) : d_ptr(new QScriptValuePrivate) { d_ptr->value.m_type = QScript::LazyStringType; - d_ptr->value.m_lazy_string_value = new QString(QString::fromAscii(value)); + d_ptr->value.m_lazy_string_value = new QString(QString::fromLatin1(value)); d_ptr->ref.ref(); } #endif diff --git a/src/qscriptvalue.h b/src/qscriptvalue.h index 726fc26..a9c9ae9 100644 --- a/src/qscriptvalue.h +++ b/src/qscriptvalue.h @@ -120,7 +120,7 @@ public: QScriptValue(QScriptEngine *engine, qsreal val); QScriptValue(QScriptEngine *engine, const QString &val); #ifndef QT_NO_CAST_FROM_ASCII - QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(QScriptEngine *engine, const char *val); + QT_ASCII_CAST_WARN QScriptValue(QScriptEngine *engine, const char *val); #endif QScriptValue(SpecialValue value); @@ -131,7 +131,7 @@ public: QScriptValue(const QString &value); QScriptValue(const QLatin1String &value); #ifndef QT_NO_CAST_FROM_ASCII - QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(const char *value); + QT_ASCII_CAST_WARN QScriptValue(const char *value); #endif QScriptValue &operator=(const QScriptValue &other); diff --git a/src/qscriptvalue_p.h b/src/qscriptvalue_p.h index 7d891ed..86b62e4 100644 --- a/src/qscriptvalue_p.h +++ b/src/qscriptvalue_p.h @@ -67,7 +67,6 @@ QT_BEGIN_NAMESPACE inline QScriptValuePrivate::QScriptValuePrivate() { engine = 0; - ref = 0; } inline QScriptValuePrivate::~QScriptValuePrivate() diff --git a/src/qscriptvalueimpl_p.h b/src/qscriptvalueimpl_p.h index cf2695b..72b3252 100644 --- a/src/qscriptvalueimpl_p.h +++ b/src/qscriptvalueimpl_p.h @@ -64,6 +64,7 @@ #include "qscriptcontextfwd_p.h" #include +#include QT_BEGIN_NAMESPACE @@ -348,7 +349,7 @@ inline QObject *QScriptValueImpl::toQObject() const return data->value; } else if (isVariant()) { int type = variantValue().userType(); - if ((type == QMetaType::QObjectStar) || (type == QMetaType::QWidgetStar)) + if ((type == QMetaType::QObjectStar) || (type == qMetaTypeId())) return *reinterpret_cast(variantValue().constData()); } #endif