diff options
author | Liang Qi <liang.qi@qt.io> | 2016-10-20 08:28:16 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-10-20 08:28:16 +0200 |
commit | f5da1a9261d64fdac3b4e12082932cb473098c73 (patch) | |
tree | bf96e4940ef4f66509589cc31095cf1d8e3b3a2c /src/quick/items/qquickitem.cpp | |
parent | 0bfcff9d9bd20f3efef6146bd1da6f263b0e24c4 (diff) | |
parent | dd313c4c5e383827913bbc106f9d19667f2dd149 (diff) |
Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
src/quick/items/qquickitemsmodule.cpp
tests/auto/quick/rendernode/tst_rendernode.cpp
Change-Id: I90582df69feb95a4e4aafb0b9793c23714654f19
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 90 |
1 files changed, 80 insertions, 10 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index e219e9b34e..e6069d692f 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -4297,12 +4297,12 @@ void QQuickItem::polish() */ void QQuickItem::mapFromItem(QQmlV4Function *args) const { + QV4::ExecutionEngine *v4 = args->v4engine(); if (args->length() != 3 && args->length() != 5) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } - QV4::ExecutionEngine *v4 = args->v4engine(); QV4::Scope scope(v4); QV4::ScopedValue item(scope, (*args)[0]); @@ -4316,7 +4316,7 @@ void QQuickItem::mapFromItem(QQmlV4Function *args) const if (!itemObj && !item->isNull()) { qmlInfo(this) << "mapFromItem() given argument \"" << item->toQStringNoThrow() << "\" which is neither null nor an Item"; - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } @@ -4324,7 +4324,7 @@ void QQuickItem::mapFromItem(QQmlV4Function *args) const QV4::ScopedValue vy(scope, (*args)[2]); if (!vx->isNumber() || !vy->isNumber()) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } @@ -4337,7 +4337,7 @@ void QQuickItem::mapFromItem(QQmlV4Function *args) const QV4::ScopedValue vw(scope, (*args)[3]); QV4::ScopedValue vh(scope, (*args)[4]); if (!vw->isNumber() || !vh->isNumber()) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } qreal w = vw->asDouble(); @@ -4385,12 +4385,12 @@ QTransform QQuickItem::itemTransform(QQuickItem *other, bool *ok) const */ void QQuickItem::mapToItem(QQmlV4Function *args) const { + QV4::ExecutionEngine *v4 = args->v4engine(); if (args->length() != 3 && args->length() != 5) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } - QV4::ExecutionEngine *v4 = args->v4engine(); QV4::Scope scope(v4); QV4::ScopedValue item(scope, (*args)[0]); @@ -4404,7 +4404,7 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const if (!itemObj && !item->isNull()) { qmlInfo(this) << "mapToItem() given argument \"" << item->toQStringNoThrow() << "\" which is neither null nor an Item"; - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } @@ -4412,7 +4412,7 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const QV4::ScopedValue vy(scope, (*args)[2]); if (!vx->isNumber() || !vy->isNumber()) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } @@ -4425,7 +4425,7 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const QV4::ScopedValue vw(scope, (*args)[3]); QV4::ScopedValue vh(scope, (*args)[4]); if (!vw->isNumber() || !vh->isNumber()) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } qreal w = vw->asDouble(); @@ -4441,6 +4441,76 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const } /*! + \since 5.7 + \qmlmethod object QtQuick::Item::mapFromGlobal(real x, real y) + + Maps the point (\a x, \a y), which is in the global coordinate system, to the + item's coordinate system, and returns a \l point matching the mapped coordinate. +*/ +/*! + \internal + */ +void QQuickItem::mapFromGlobal(QQmlV4Function *args) const +{ + QV4::ExecutionEngine *v4 = args->v4engine(); + if (args->length() != 2) { + v4->throwTypeError(); + return; + } + + QV4::Scope scope(v4); + QV4::ScopedValue vx(scope, (*args)[0]); + QV4::ScopedValue vy(scope, (*args)[1]); + + if (!vx->isNumber() || !vy->isNumber()) { + v4->throwTypeError(); + return; + } + + qreal x = vx->asDouble(); + qreal y = vy->asDouble(); + QVariant result = mapFromGlobal(QPointF(x, y)); + + QV4::ScopedObject rv(scope, v4->fromVariant(result)); + args->setReturnValue(rv.asReturnedValue()); +} + +/*! + \since 5.7 + \qmlmethod object QtQuick::Item::mapToGlobal(real x, real y) + + Maps the point (\a x, \a y), which is in this item's coordinate system, to the + global coordinate system, and returns a \l point matching the mapped coordinate. +*/ +/*! + \internal + */ +void QQuickItem::mapToGlobal(QQmlV4Function *args) const +{ + QV4::ExecutionEngine *v4 = args->v4engine(); + if (args->length() != 2) { + v4->throwTypeError(); + return; + } + + QV4::Scope scope(v4); + QV4::ScopedValue vx(scope, (*args)[0]); + QV4::ScopedValue vy(scope, (*args)[1]); + + if (!vx->isNumber() || !vy->isNumber()) { + v4->throwTypeError(); + return; + } + + qreal x = vx->asDouble(); + qreal y = vy->asDouble(); + QVariant result = mapToGlobal(QPointF(x, y)); + + QV4::ScopedObject rv(scope, v4->fromVariant(result)); + args->setReturnValue(rv.asReturnedValue()); +} + +/*! \qmlmethod QtQuick::Item::forceActiveFocus() Forces active focus on the item. |