From db3c23a9a44f93efff1e24f597bc8b487173e9c1 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 21 May 2013 12:37:52 +0200 Subject: Get rid of v8::Number Change-Id: I38bdf8fe4dd73c61317912ec6308a9a1e870ad99 Reviewed-by: Simon Hausmann --- src/particles/qquickv8particledata.cpp | 6 +-- src/qml/qml/qqmlvme.cpp | 2 +- src/qml/qml/v4/qv4v8.cpp | 22 -------- src/qml/qml/v4/qv4v8_p.h | 17 +----- src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 76 +++++++++++++-------------- src/qml/qml/v8/qv8listwrapper.cpp | 2 +- src/qml/qml/v8/qv8qobjectwrapper.cpp | 12 ++--- src/qml/qml/v8/qv8sequencewrapper_p_p.h | 2 +- src/qml/qml/v8/qv8valuetypewrapper.cpp | 2 +- src/quick/items/context2d/qquickcontext2d.cpp | 12 ++--- src/quick/items/qquickitem.cpp | 24 ++++----- 11 files changed, 71 insertions(+), 106 deletions(-) (limited to 'src') diff --git a/src/particles/qquickv8particledata.cpp b/src/particles/qquickv8particledata.cpp index 8a73e4b287..a6ff56a41c 100644 --- a/src/particles/qquickv8particledata.cpp +++ b/src/particles/qquickv8particledata.cpp @@ -322,7 +322,7 @@ static QV4::Value particleData_curSize(const v8::Arguments &args) if (!r || !r->datum) \ V8THROW_ERROR("Not a valid ParticleData object"); \ \ - return v8::Number::New((r->datum->color. VAR )/255.0);\ + return QV4::Value::fromDouble((r->datum->color. VAR )/255.0);\ }\ \ static void particleData_set_ ## NAME (v8::Handle, v8::Handle value, const v8::AccessorInfo &info)\ @@ -359,7 +359,7 @@ static void particleData_set_ ## VARIABLE (v8::Handle, v8::Handledatum) \ V8THROW_ERROR("Not a valid ParticleData object"); \ \ - return v8::Number::New(r->datum-> VARIABLE);\ + return QV4::Value::fromDouble(r->datum-> VARIABLE);\ }\ \ static void particleData_set_ ## VARIABLE (v8::Handle, v8::Handle value, const v8::AccessorInfo &info)\ @@ -377,7 +377,7 @@ static void particleData_set_ ## VARIABLE (v8::Handle, v8::Handledatum) \ V8THROW_ERROR("Not a valid ParticleData object"); \ \ - return v8::Number::New(r->datum-> GETTER ());\ + return QV4::Value::fromDouble(r->datum-> GETTER ());\ }\ \ static void particleData_set_ ## VARIABLE (v8::Handle, v8::Handle value, const v8::AccessorInfo &info)\ diff --git a/src/qml/qml/qqmlvme.cpp b/src/qml/qml/qqmlvme.cpp index 59b93366d0..bc918cfa4d 100644 --- a/src/qml/qml/qqmlvme.cpp +++ b/src/qml/qml/qqmlvme.cpp @@ -421,7 +421,7 @@ QObject *QQmlVME::run(QList *errors, // We deliberately do not use string converters here QML_STORE_VAR(StoreVar, ep->v8engine()->fromVariant(PRIMITIVES.at(instr.value))); QML_STORE_VAR(StoreVarInteger, QV4::Value::fromInt32(instr.value)); - QML_STORE_VAR(StoreVarDouble, v8::Number::New(instr.value)); + QML_STORE_VAR(StoreVarDouble, QV4::Value::fromDouble(instr.value)); QML_STORE_VAR(StoreVarBool, v8::Boolean::New(instr.value)); // Store a literal value in a QJSValue property. diff --git a/src/qml/qml/v4/qv4v8.cpp b/src/qml/qml/v4/qv4v8.cpp index 1b888ac729..9014a37bc0 100644 --- a/src/qml/qml/v4/qv4v8.cpp +++ b/src/qml/qml/v4/qv4v8.cpp @@ -455,11 +455,6 @@ Handle Value::ToBoolean() const return QV4::Value::fromBoolean(ConstValuePtr(this)->toBoolean()); } -Handle Value::ToNumber() const -{ - return QV4::Value::fromDouble(ConstValuePtr(this)->toNumber()); -} - Handle Value::ToString() const { return QV4::Value::fromString(ConstValuePtr(this)->toString(currentEngine()->current)); @@ -646,23 +641,6 @@ String::Value::Value(Handle obj) } -double Number::Value() const -{ - const QV4::Value *v = ConstValuePtr(this); - assert(v->isNumber()); - return v->asDouble(); -} - -Handle Number::New(double value) -{ - return QV4::Value::fromDouble(value); -} - -Number *Number::Cast(v8::Value *obj) -{ - return static_cast(obj); -} - struct ExternalResourceWrapper : public QV4::Object::ExternalResource { ExternalResourceWrapper(v8::Object::ExternalResource *wrapped) diff --git a/src/qml/qml/v4/qv4v8_p.h b/src/qml/qml/v4/qv4v8_p.h index f6aae840be..d09cc92662 100644 --- a/src/qml/qml/v4/qv4v8_p.h +++ b/src/qml/qml/v4/qv4v8_p.h @@ -108,7 +108,6 @@ class String; class StringObject; class Value; class Utils; -class Number; class NumberObject; class Object; class Array; @@ -772,7 +771,6 @@ class V8EXPORT Value { bool IsError() const; Handle ToBoolean() const; - Handle ToNumber() const; Handle ToString() const; Handle ToObject() const; @@ -1012,17 +1010,6 @@ class V8EXPORT String : public Primitive { }; -/** - * A JavaScript number value (ECMA-262, 4.3.20) - */ -class V8EXPORT Number : public Primitive { - public: - double Value() const; - static Handle New(double value); - static Number* Cast(v8::Value* obj); -}; - - enum PropertyAttribute { None = 0, ReadOnly = 1 << 0, @@ -1433,11 +1420,11 @@ typedef Handle (*IndexedPropertyEnumerator)(const AccessorInfo& info); * * \code * v8::Local t = v8::FunctionTemplate::New(); - * t->Set("func_property", v8::Number::New(1)); + * t->Set("func_property", QV4::Value::fromDouble(1)); * * v8::Local proto_t = t->PrototypeTemplate(); * proto_t->Set("proto_method", v8::FunctionTemplate::New(InvokeCallback)); - * proto_t->Set("proto_const", v8::Number::New(2)); + * proto_t->Set("proto_const", QV4::Value::fromDouble(2)); * * v8::Local instance_t = t->InstanceTemplate(); * instance_t->SetAccessor("instance_accessor", InstanceAccessorCallback); diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index c1995599be..be0e983154 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -501,8 +501,8 @@ QV4::Value point(const v8::Arguments &args) if (args.Length() != 2) V4THROW_ERROR("Qt.point(): Invalid arguments"); - double x = args[0]->ToNumber()->Value(); - double y = args[1]->ToNumber()->Value(); + double x = args[0]->v4Value().asDouble(); + double y = args[1]->v4Value().asDouble(); return V8ENGINE()->fromVariant(QVariant::fromValue(QPointF(x, y))); } @@ -516,8 +516,8 @@ QV4::Value size(const v8::Arguments &args) if (args.Length() != 2) V4THROW_ERROR("Qt.size(): Invalid arguments"); - double w = args[0]->ToNumber()->Value(); - double h = args[1]->ToNumber()->Value(); + double w = args[0]->v4Value().asDouble(); + double h = args[1]->v4Value().asDouble(); return V8ENGINE()->fromVariant(QVariant::fromValue(QSizeF(w, h))); } @@ -532,8 +532,8 @@ QV4::Value vector2d(const v8::Arguments &args) V4THROW_ERROR("Qt.vector2d(): Invalid arguments"); float xy[3]; // qvector2d uses float internally - xy[0] = args[0]->ToNumber()->Value(); - xy[1] = args[1]->ToNumber()->Value(); + xy[0] = args[0]->v4Value().asDouble(); + xy[1] = args[1]->v4Value().asDouble(); const void *params[] = { xy }; return V8ENGINE()->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QVector2D, 1, params)); @@ -549,9 +549,9 @@ QV4::Value vector3d(const v8::Arguments &args) V4THROW_ERROR("Qt.vector3d(): Invalid arguments"); float xyz[3]; // qvector3d uses float internally - xyz[0] = args[0]->ToNumber()->Value(); - xyz[1] = args[1]->ToNumber()->Value(); - xyz[2] = args[2]->ToNumber()->Value(); + xyz[0] = args[0]->v4Value().asDouble(); + xyz[1] = args[1]->v4Value().asDouble(); + xyz[2] = args[2]->v4Value().asDouble(); const void *params[] = { xyz }; return V8ENGINE()->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QVector3D, 1, params)); @@ -567,10 +567,10 @@ QV4::Value vector4d(const v8::Arguments &args) V4THROW_ERROR("Qt.vector4d(): Invalid arguments"); float xyzw[4]; // qvector4d uses float internally - xyzw[0] = args[0]->ToNumber()->Value(); - xyzw[1] = args[1]->ToNumber()->Value(); - xyzw[2] = args[2]->ToNumber()->Value(); - xyzw[3] = args[3]->ToNumber()->Value(); + xyzw[0] = args[0]->v4Value().asDouble(); + xyzw[1] = args[1]->v4Value().asDouble(); + xyzw[2] = args[2]->v4Value().asDouble(); + xyzw[3] = args[3]->v4Value().asDouble(); const void *params[] = { xyzw }; return V8ENGINE()->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QVector4D, 1, params)); @@ -586,10 +586,10 @@ QV4::Value quaternion(const v8::Arguments &args) V4THROW_ERROR("Qt.quaternion(): Invalid arguments"); qreal sxyz[4]; // qquaternion uses qreal internally - sxyz[0] = args[0]->ToNumber()->Value(); - sxyz[1] = args[1]->ToNumber()->Value(); - sxyz[2] = args[2]->ToNumber()->Value(); - sxyz[3] = args[3]->ToNumber()->Value(); + sxyz[0] = args[0]->v4Value().asDouble(); + sxyz[1] = args[1]->v4Value().asDouble(); + sxyz[2] = args[2]->v4Value().asDouble(); + sxyz[3] = args[3]->v4Value().asDouble(); const void *params[] = { sxyz }; return V8ENGINE()->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QQuaternion, 1, params)); @@ -638,22 +638,22 @@ QV4::Value matrix4x4(const v8::Arguments &args) V4THROW_ERROR("Qt.matrix4x4(): Invalid arguments"); qreal vals[16]; // qmatrix4x4 uses qreal internally - vals[0] = args[0]->ToNumber()->Value(); - vals[1] = args[1]->ToNumber()->Value(); - vals[2] = args[2]->ToNumber()->Value(); - vals[3] = args[3]->ToNumber()->Value(); - vals[4] = args[4]->ToNumber()->Value(); - vals[5] = args[5]->ToNumber()->Value(); - vals[6] = args[6]->ToNumber()->Value(); - vals[7] = args[7]->ToNumber()->Value(); - vals[8] = args[8]->ToNumber()->Value(); - vals[9] = args[9]->ToNumber()->Value(); - vals[10] = args[10]->ToNumber()->Value(); - vals[11] = args[11]->ToNumber()->Value(); - vals[12] = args[12]->ToNumber()->Value(); - vals[13] = args[13]->ToNumber()->Value(); - vals[14] = args[14]->ToNumber()->Value(); - vals[15] = args[15]->ToNumber()->Value(); + vals[0] = args[0]->v4Value().asDouble(); + vals[1] = args[1]->v4Value().asDouble(); + vals[2] = args[2]->v4Value().asDouble(); + vals[3] = args[3]->v4Value().asDouble(); + vals[4] = args[4]->v4Value().asDouble(); + vals[5] = args[5]->v4Value().asDouble(); + vals[6] = args[6]->v4Value().asDouble(); + vals[7] = args[7]->v4Value().asDouble(); + vals[8] = args[8]->v4Value().asDouble(); + vals[9] = args[9]->v4Value().asDouble(); + vals[10] = args[10]->v4Value().asDouble(); + vals[11] = args[11]->v4Value().asDouble(); + vals[12] = args[12]->v4Value().asDouble(); + vals[13] = args[13]->v4Value().asDouble(); + vals[14] = args[14]->v4Value().asDouble(); + vals[15] = args[15]->v4Value().asDouble(); const void *params[] = { vals }; return V8ENGINE()->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QMatrix4x4, 1, params)); @@ -691,7 +691,7 @@ QV4::Value lighter(const v8::Arguments &args) qreal factor = 1.5; if (args.Length() == 2) - factor = args[1]->ToNumber()->Value(); + factor = args[1]->v4Value().asDouble(); return V8ENGINE()->fromVariant(QQml_colorProvider()->lighter(v, factor)); } @@ -729,7 +729,7 @@ QV4::Value darker(const v8::Arguments &args) qreal factor = 2.0; if (args.Length() == 2) - factor = args[1]->ToNumber()->Value(); + factor = args[1]->v4Value().asDouble(); return V8ENGINE()->fromVariant(QQml_colorProvider()->darker(v, factor)); } @@ -819,7 +819,7 @@ QV4::Value formatDate(const v8::Arguments &args) QString format = V8ENGINE()->toVariant(args[1]->v4Value(), -1).toString(); formattedDate = date.toString(format); } else if (args[1]->IsNumber()) { - quint32 intFormat = args[1]->ToNumber()->Value(); + quint32 intFormat = args[1]->v4Value().asDouble(); Qt::DateFormat format = Qt::DateFormat(intFormat); formattedDate = date.toString(format); } else { @@ -866,7 +866,7 @@ QV4::Value formatTime(const v8::Arguments &args) QString format = V8ENGINE()->toVariant(args[1]->v4Value(), -1).toString(); formattedTime = time.toString(format); } else if (args[1]->IsNumber()) { - quint32 intFormat = args[1]->ToNumber()->Value(); + quint32 intFormat = args[1]->v4Value().asDouble(); Qt::DateFormat format = Qt::DateFormat(intFormat); formattedTime = time.toString(format); } else { @@ -982,7 +982,7 @@ QV4::Value formatDateTime(const v8::Arguments &args) QString format = V8ENGINE()->toVariant(args[1]->v4Value(), -1).toString(); formattedDt = dt.toString(format); } else if (args[1]->IsNumber()) { - quint32 intFormat = args[1]->ToNumber()->Value(); + quint32 intFormat = args[1]->v4Value().asDouble(); Qt::DateFormat format = Qt::DateFormat(intFormat); formattedDt = dt.toString(format); } else { diff --git a/src/qml/qml/v8/qv8listwrapper.cpp b/src/qml/qml/v8/qv8listwrapper.cpp index 0955135b81..8e90bceba1 100644 --- a/src/qml/qml/v8/qv8listwrapper.cpp +++ b/src/qml/qml/v8/qv8listwrapper.cpp @@ -187,7 +187,7 @@ v8::Handle QV8ListWrapper::Enumerator(const v8::AccessorInfo &info) v8::Handle rv = v8::Array::New(count); for (uint ii = 0; ii < count; ++ii) - rv->Set(ii, v8::Number::New(ii)); + rv->Set(ii, QV4::Value::fromDouble(ii)); return rv; } diff --git a/src/qml/qml/v8/qv8qobjectwrapper.cpp b/src/qml/qml/v8/qv8qobjectwrapper.cpp index 7be150f5e8..8a3d5d5d59 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper.cpp +++ b/src/qml/qml/v8/qv8qobjectwrapper.cpp @@ -255,9 +255,9 @@ static inline v8::Handle valueToHandle(QV8Engine *, bool v) static inline v8::Handle valueToHandle(QV8Engine *e, const QString &v) { return e->toString(v); } static inline v8::Handle valueToHandle(QV8Engine *, float v) -{ return v8::Number::New(v); } +{ return QV4::Value::fromDouble(v); } static inline v8::Handle valueToHandle(QV8Engine *, double v) -{ return v8::Number::New(v); } +{ return QV4::Value::fromDouble(v); } static inline v8::Handle valueToHandle(QV8Engine *e, QObject *v) { return e->newQObject(v); } @@ -675,13 +675,13 @@ static inline void StoreProperty(QV8Engine *engine, QObject *object, QQmlPropert } else if (value->IsFunction()) { // this is handled by the binding creation above } else if (property->propType == QMetaType::Int && value->IsNumber()) { - PROPERTY_STORE(int, qRound(value->ToNumber()->Value())); + PROPERTY_STORE(int, qRound(value->v4Value().asDouble())); } else if (property->propType == QMetaType::QReal && value->IsNumber()) { - PROPERTY_STORE(qreal, qreal(value->ToNumber()->Value())); + PROPERTY_STORE(qreal, qreal(value->v4Value().asDouble())); } else if (property->propType == QMetaType::Float && value->IsNumber()) { - PROPERTY_STORE(float, float(value->ToNumber()->Value())); + PROPERTY_STORE(float, float(value->v4Value().asDouble())); } else if (property->propType == QMetaType::Double && value->IsNumber()) { - PROPERTY_STORE(double, double(value->ToNumber()->Value())); + PROPERTY_STORE(double, double(value->v4Value().asDouble())); } else if (property->propType == QMetaType::QString && value->IsString()) { PROPERTY_STORE(QString, value->v4Value().toQString()); } else if (property->isVarProperty()) { diff --git a/src/qml/qml/v8/qv8sequencewrapper_p_p.h b/src/qml/qml/v8/qv8sequencewrapper_p_p.h index 51be2312d2..ff5785868f 100644 --- a/src/qml/qml/v8/qv8sequencewrapper_p_p.h +++ b/src/qml/qml/v8/qv8sequencewrapper_p_p.h @@ -146,7 +146,7 @@ static qreal convertV8ValueToReal(QV8Engine *, v8::Handle v) static v8::Handle convertRealToV8Value(QV8Engine *, qreal v) { - return v8::Number::New(v); + return QV4::Value::fromDouble(v); } static QString convertRealToString(QV8Engine *, qreal v) diff --git a/src/qml/qml/v8/qv8valuetypewrapper.cpp b/src/qml/qml/v8/qv8valuetypewrapper.cpp index 0ca48cf5c2..cde00a903c 100644 --- a/src/qml/qml/v8/qv8valuetypewrapper.cpp +++ b/src/qml/qml/v8/qv8valuetypewrapper.cpp @@ -337,7 +337,7 @@ v8::Handle QV8ValueTypeWrapper::Getter(v8::Handle propert } // These four types are the most common used by the value type wrappers - VALUE_TYPE_LOAD(QMetaType::QReal, qreal, v8::Number::New); + VALUE_TYPE_LOAD(QMetaType::QReal, qreal, QV4::Value::fromDouble); VALUE_TYPE_LOAD(QMetaType::Int, int, QV4::Value::fromInt32); VALUE_TYPE_LOAD(QMetaType::QString, QString, r->engine->toString); VALUE_TYPE_LOAD(QMetaType::Bool, bool, v8::Boolean::New); diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index 65a5780013..61d31f9633 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -744,7 +744,7 @@ static v8::Handle ctx2d_globalAlpha(v8::Handle, const v8: QQuickJSContext2D *r = info.This()->v4Value().asObject()->asQQuickJSContext2D(); CHECK_CONTEXT(r) - return v8::Number::New(r->context->state.globalAlpha); + return QV4::Value::fromDouble(r->context->state.globalAlpha); } static void ctx2d_globalAlpha_set(v8::Handle, v8::Handle value, const v8::AccessorInfo &info) @@ -1372,7 +1372,7 @@ v8::Handle ctx2d_lineWidth(v8::Handle, const v8::Accessor CHECK_CONTEXT(r) - return v8::Number::New(r->context->state.lineWidth); + return QV4::Value::fromDouble(r->context->state.lineWidth); } static void ctx2d_lineWidth_set(v8::Handle, v8::Handle value, const v8::AccessorInfo &info) @@ -1399,7 +1399,7 @@ v8::Handle ctx2d_miterLimit(v8::Handle, const v8::Accesso CHECK_CONTEXT(r) - return v8::Number::New(r->context->state.miterLimit); + return QV4::Value::fromDouble(r->context->state.miterLimit); } static void ctx2d_miterLimit_set(v8::Handle, v8::Handle value, const v8::AccessorInfo &info) @@ -1426,7 +1426,7 @@ v8::Handle ctx2d_shadowBlur(v8::Handle, const v8::Accesso CHECK_CONTEXT(r) - return v8::Number::New(r->context->state.shadowBlur); + return QV4::Value::fromDouble(r->context->state.shadowBlur); } static void ctx2d_shadowBlur_set(v8::Handle, v8::Handle value, const v8::AccessorInfo &info) @@ -1482,7 +1482,7 @@ v8::Handle ctx2d_shadowOffsetX(v8::Handle, const v8::Acce CHECK_CONTEXT(r) - return v8::Number::New(r->context->state.shadowOffsetX); + return QV4::Value::fromDouble(r->context->state.shadowOffsetX); } static void ctx2d_shadowOffsetX_set(v8::Handle, v8::Handle value, const v8::AccessorInfo &info) @@ -1508,7 +1508,7 @@ v8::Handle ctx2d_shadowOffsetY(v8::Handle, const v8::Acce CHECK_CONTEXT(r) - return v8::Number::New(r->context->state.shadowOffsetY); + return QV4::Value::fromDouble(r->context->state.shadowOffsetY); } static void ctx2d_shadowOffsetY_set(v8::Handle, v8::Handle value, const v8::AccessorInfo &info) diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 10bdbe30ac..fb64fa854c 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -3779,15 +3779,15 @@ void QQuickItem::mapFromItem(QQmlV4Function *args) const QRectF r = mapRectFromItem(itemObj, QRectF(x, y, w, h)); - rv->Set(v8::String::New("x"), v8::Number::New(r.x())); - rv->Set(v8::String::New("y"), v8::Number::New(r.y())); - rv->Set(v8::String::New("width"), v8::Number::New(r.width())); - rv->Set(v8::String::New("height"), v8::Number::New(r.height())); + rv->Set(v8::String::New("x"), QV4::Value::fromDouble(r.x())); + rv->Set(v8::String::New("y"), QV4::Value::fromDouble(r.y())); + rv->Set(v8::String::New("width"), QV4::Value::fromDouble(r.width())); + rv->Set(v8::String::New("height"), QV4::Value::fromDouble(r.height())); } else { QPointF p = mapFromItem(itemObj, QPointF(x, y)); - rv->Set(v8::String::New("x"), v8::Number::New(p.x())); - rv->Set(v8::String::New("y"), v8::Number::New(p.y())); + rv->Set(v8::String::New("x"), QV4::Value::fromDouble(p.x())); + rv->Set(v8::String::New("y"), QV4::Value::fromDouble(p.y())); } } } @@ -3851,15 +3851,15 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const QRectF r = mapRectToItem(itemObj, QRectF(x, y, w, h)); - rv->Set(v8::String::New("x"), v8::Number::New(r.x())); - rv->Set(v8::String::New("y"), v8::Number::New(r.y())); - rv->Set(v8::String::New("width"), v8::Number::New(r.width())); - rv->Set(v8::String::New("height"), v8::Number::New(r.height())); + rv->Set(v8::String::New("x"), QV4::Value::fromDouble(r.x())); + rv->Set(v8::String::New("y"), QV4::Value::fromDouble(r.y())); + rv->Set(v8::String::New("width"), QV4::Value::fromDouble(r.width())); + rv->Set(v8::String::New("height"), QV4::Value::fromDouble(r.height())); } else { QPointF p = mapToItem(itemObj, QPointF(x, y)); - rv->Set(v8::String::New("x"), v8::Number::New(p.x())); - rv->Set(v8::String::New("y"), v8::Number::New(p.y())); + rv->Set(v8::String::New("x"), QV4::Value::fromDouble(p.x())); + rv->Set(v8::String::New("y"), QV4::Value::fromDouble(p.y())); } } } -- cgit v1.2.3