From 702f94960896f6f7b73d3dbf4e675e42e2d54d2d Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 15 Jan 2020 10:45:30 +0100 Subject: Make QtQuick::Item::mapFrom/ToItem also accept point and rect [ChangeLog][QtQuick][Item] Item.mapToItem() and mapFromItem() now work with QPointF and QRectF types as well as with raw numbers. Change-Id: Ifeb5c36e1bc5a283df4e11c8cf2af960de3f287b Reviewed-by: Shawn Rutledge --- tests/auto/quick/qquickitem2/data/mapCoordinates.qml | 10 ++++++++++ tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml | 10 ++++++++++ tests/auto/quick/qquickitem2/tst_qquickitem.cpp | 16 ++++++++++++++++ 3 files changed, 36 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/quick/qquickitem2/data/mapCoordinates.qml b/tests/auto/quick/qquickitem2/data/mapCoordinates.qml index ce9e3348f5..3e34633338 100644 --- a/tests/auto/quick/qquickitem2/data/mapCoordinates.qml +++ b/tests/auto/quick/qquickitem2/data/mapCoordinates.qml @@ -49,11 +49,21 @@ Item { return Qt.point(pos.x, pos.y) } + function mapAToBPoint(x, y) { + var pos = itemA.mapToItem(itemB, Qt.point(x, y)) + return Qt.point(pos.x, pos.y) + } + function mapAFromB(x, y) { var pos = itemA.mapFromItem(itemB, x, y) return Qt.point(pos.x, pos.y) } + function mapAFromBPoint(x, y) { + var pos = itemA.mapFromItem(itemB, Qt.point(x, y)) + return Qt.point(pos.x, pos.y) + } + function mapAToNull(x, y) { var pos = itemA.mapToItem(null, x, y) return Qt.point(pos.x, pos.y) diff --git a/tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml b/tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml index 2b856a27fc..c66d1e89b6 100644 --- a/tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml +++ b/tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml @@ -45,11 +45,21 @@ Item { return Qt.rect(pos.x, pos.y, pos.width, pos.height) } + function mapAToBRect(x, y, w, h) { + var pos = itemA.mapToItem(itemB, Qt.rect(x, y, w, h)) + return Qt.rect(pos.x, pos.y, pos.width, pos.height) + } + function mapAFromB(x, y, w, h) { var pos = itemA.mapFromItem(itemB, x, y, w, h) return Qt.rect(pos.x, pos.y, pos.width, pos.height) } + function mapAFromBRect(x, y, w, h) { + var pos = itemA.mapFromItem(itemB, Qt.rect(x, y, w, h)) + return Qt.rect(pos.x, pos.y, pos.width, pos.height) + } + function mapAToNull(x, y, w, h) { var pos = itemA.mapToItem(null, x, y, w, h) return Qt.rect(pos.x, pos.y, pos.width, pos.height) diff --git a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp index 0fe626f364..a1b4a70217 100644 --- a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp +++ b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp @@ -2391,10 +2391,18 @@ void tst_QQuickItem::mapCoordinates() Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); QCOMPARE(result.value(), qobject_cast(a)->mapToItem(b, QPointF(x, y))); + QVERIFY(QMetaObject::invokeMethod(root, "mapAToBPoint", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value(), qobject_cast(a)->mapToItem(b, QPointF(x, y))); + QVERIFY(QMetaObject::invokeMethod(root, "mapAFromB", Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); QCOMPARE(result.value(), qobject_cast(a)->mapFromItem(b, QPointF(x, y))); + QVERIFY(QMetaObject::invokeMethod(root, "mapAFromBPoint", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value(), qobject_cast(a)->mapFromItem(b, QPointF(x, y))); + QVERIFY(QMetaObject::invokeMethod(root, "mapAToNull", Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); QCOMPARE(result.value(), qobject_cast(a)->mapToScene(QPointF(x, y))); @@ -2480,10 +2488,18 @@ void tst_QQuickItem::mapCoordinatesRect() Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y), Q_ARG(QVariant, width), Q_ARG(QVariant, height))); QCOMPARE(result.value(), qobject_cast(a)->mapRectToItem(b, QRectF(x, y, width, height))); + QVERIFY(QMetaObject::invokeMethod(root, "mapAToBRect", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y), Q_ARG(QVariant, width), Q_ARG(QVariant, height))); + QCOMPARE(result.value(), qobject_cast(a)->mapRectToItem(b, QRectF(x, y, width, height))); + QVERIFY(QMetaObject::invokeMethod(root, "mapAFromB", Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y), Q_ARG(QVariant, width), Q_ARG(QVariant, height))); QCOMPARE(result.value(), qobject_cast(a)->mapRectFromItem(b, QRectF(x, y, width, height))); + QVERIFY(QMetaObject::invokeMethod(root, "mapAFromBRect", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y), Q_ARG(QVariant, width), Q_ARG(QVariant, height))); + QCOMPARE(result.value(), qobject_cast(a)->mapRectFromItem(b, QRectF(x, y, width, height))); + QVERIFY(QMetaObject::invokeMethod(root, "mapAToNull", Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y), Q_ARG(QVariant, width), Q_ARG(QVariant, height))); QCOMPARE(result.value(), qobject_cast(a)->mapRectToScene(QRectF(x, y, width, height))); -- cgit v1.2.3