diff options
Diffstat (limited to 'tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp')
-rw-r--r-- | tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp | 299 |
1 files changed, 158 insertions, 141 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp index ae71b0412f..0ae69ea59f 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp @@ -1,31 +1,26 @@ /**************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:LGPL21$ +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. ** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** @@ -108,7 +103,7 @@ class HoverItem : public QGraphicsRectItem public: HoverItem() : QGraphicsRectItem(QRectF(-10, -10, 20, 20)), isHovered(false) - { setAcceptsHoverEvents(true); } + { setAcceptHoverEvents(true); } bool isHovered; @@ -227,8 +222,10 @@ private slots: void render_data(); void render(); void renderItemsWithNegativeWidthOrHeight(); +#ifndef QT_NO_CONTEXTMENU void contextMenuEvent(); void contextMenuEvent_ItemIgnoresTransformations(); +#endif void update(); void update2(); void views(); @@ -301,11 +298,16 @@ void tst_QGraphicsScene::construction() QVERIFY(scene.items(QPainterPath()).isEmpty()); QTest::ignoreMessage(QtWarningMsg, "QGraphicsScene::collidingItems: cannot find collisions for null item"); QVERIFY(scene.collidingItems(0).isEmpty()); - QVERIFY(!scene.itemAt(QPointF())); + QVERIFY(scene.items(QPointF()).isEmpty()); QVERIFY(scene.selectedItems().isEmpty()); QVERIFY(!scene.focusItem()); } +static inline const QGraphicsItem *itemAt(const QGraphicsScene &scene, qreal x, qreal y) +{ + return scene.items(QPointF(x, y)).value(0, Q_NULLPTR); +} + void tst_QGraphicsScene::sceneRect() { QGraphicsScene scene; @@ -318,8 +320,8 @@ void tst_QGraphicsScene::sceneRect() item->setPos(-5, -5); QCOMPARE(sceneRectChanged.count(), 0); - QCOMPARE(scene.itemAt(0, 0), item); - QCOMPARE(scene.itemAt(10, 10), (QGraphicsItem *)0); + QCOMPARE(itemAt(scene, 0, 0), item); + QVERIFY(scene.items(QPointF(10, 10)).isEmpty()); QCOMPARE(sceneRectChanged.count(), 0); QCOMPARE(scene.sceneRect(), QRectF(-5, -5, 10, 10)); QCOMPARE(sceneRectChanged.count(), 1); @@ -334,8 +336,8 @@ void tst_QGraphicsScene::sceneRect() QCOMPARE(sceneRectChanged.count(), 3); QCOMPARE(sceneRectChanged.last().at(0).toRectF(), scene.sceneRect()); - QCOMPARE(scene.itemAt(0, 0), item); - QCOMPARE(scene.itemAt(10, 10), (QGraphicsItem *)0); + QCOMPARE(itemAt(scene, 0, 0), item); + QVERIFY(scene.items(QPointF(10, 10)).isEmpty()); QCOMPARE(scene.sceneRect(), QRectF(-100, -100, 10, 10)); item->setPos(10, 10); QCOMPARE(scene.sceneRect(), QRectF(-100, -100, 10, 10)); @@ -344,8 +346,8 @@ void tst_QGraphicsScene::sceneRect() scene.setSceneRect(QRectF()); - QCOMPARE(scene.itemAt(10, 10), item); - QCOMPARE(scene.itemAt(20, 20), (QGraphicsItem *)0); + QCOMPARE(itemAt(scene, 10, 10), item); + QVERIFY(scene.items(QPointF(20, 20)).isEmpty()); QCOMPARE(sceneRectChanged.count(), 4); QCOMPARE(scene.sceneRect(), QRectF(-5, -5, 25, 25)); QCOMPARE(sceneRectChanged.count(), 5); @@ -374,7 +376,7 @@ void tst_QGraphicsScene::itemIndexMethod() for (int x = minX; x < maxX; x += 100) { QGraphicsItem *item = scene.addRect(QRectF(0, 0, 10, 10)); item->setPos(x, y); - QCOMPARE(scene.itemAt(x, y), item); + QCOMPARE(itemAt(scene, x, y), item); items << item; } } @@ -382,7 +384,7 @@ void tst_QGraphicsScene::itemIndexMethod() int n = 0; for (int y = minY; y < maxY; y += 100) { for (int x = minX; x < maxX; x += 100) - QCOMPARE(scene.itemAt(x, y), items.at(n++)); + QCOMPARE(itemAt(scene, x, y), items.at(n++)); } scene.setItemIndexMethod(QGraphicsScene::NoIndex); @@ -391,7 +393,7 @@ void tst_QGraphicsScene::itemIndexMethod() n = 0; for (int y = minY; y < maxY; y += 100) { for (int x = minX; x < maxX; x += 100) - QCOMPARE(scene.itemAt(x, y), items.at(n++)); + QCOMPARE(itemAt(scene, x, y), items.at(n++)); } scene.setItemIndexMethod(QGraphicsScene::BspTreeIndex); @@ -400,7 +402,7 @@ void tst_QGraphicsScene::itemIndexMethod() n = 0; for (int y = minY; y < maxY; y += 100) { for (int x = minX; x < maxX; x += 100) - QCOMPARE(scene.itemAt(x, y), items.at(n++)); + QCOMPARE(itemAt(scene, x, y), items.at(n++)); } } @@ -439,7 +441,7 @@ void tst_QGraphicsScene::items() items << scene.addRect(QRectF(0, 0, 10, 10)); } QCOMPARE(scene.items().size(), items.size()); - scene.itemAt(0, 0); // trigger indexing + itemAt(scene, 0, 0); // trigger indexing scene.removeItem(items.at(5)); delete items.at(5); @@ -458,8 +460,8 @@ void tst_QGraphicsScene::items() QList<QGraphicsItem *> items; items<<l1<<l2; QCOMPARE(scene.items().size(), items.size()); - QVERIFY(scene.items(-1, -1, 2, 2).contains(l1)); - QVERIFY(scene.items(-1, -1, 2, 2).contains(l2)); + QVERIFY(scene.items(QRectF(-1, -1, 2, 2)).contains(l1)); + QVERIFY(scene.items(QRectF(-1, -1, 2, 2)).contains(l2)); } } @@ -722,7 +724,7 @@ void tst_QGraphicsScene::items_QRectF_2() QGraphicsItem *item = scene.addEllipse(ellipseRect); QCOMPARE(!scene.items(sceneRect, selectionMode).isEmpty(), contained); - item->rotate(45); + item->setTransform(QTransform().rotate(45), true); QCOMPARE(!scene.items(sceneRect, selectionMode).isEmpty(), containedRotated); } @@ -1085,19 +1087,19 @@ void tst_QGraphicsScene::addItem() QTRY_VERIFY(view.repaints > 0); view.repaints = 0; - QCOMPARE(scene.itemAt(0, 0), path); + QCOMPARE(itemAt(scene, 0, 0), path); QGraphicsItem *path2 = new QGraphicsEllipseItem(QRectF(-10, -10, 20, 20)); path2->setPos(100, 100); - QCOMPARE(scene.itemAt(0, 0), path); - QCOMPARE(scene.itemAt(100, 100), (QGraphicsItem *)0); + QCOMPARE(itemAt(scene, 0, 0), path); + QVERIFY(scene.items(QPointF(100, 100)).isEmpty()); scene.addItem(path2); // Adding an item should always issue a repaint. QTRY_VERIFY(view.repaints > 0); - QCOMPARE(scene.itemAt(100, 100), path2); + QCOMPARE(itemAt(scene, 100, 100), path2); } { // 2) Create scene, then item, then add item @@ -1109,8 +1111,8 @@ void tst_QGraphicsScene::addItem() path2->setPos(100, 100); scene.addItem(path2); - QCOMPARE(scene.itemAt(0, 0), path); - QCOMPARE(scene.itemAt(100, 100), path2); + QCOMPARE(itemAt(scene, 0, 0), path); + QCOMPARE(itemAt(scene, 100, 100), path2); } } @@ -1123,15 +1125,15 @@ void tst_QGraphicsScene::addEllipse() QCOMPARE(ellipse->pen(), QPen(Qt::red)); QCOMPARE(ellipse->brush(), QBrush(Qt::blue)); QCOMPARE(ellipse->rect(), QRectF(-10, -10, 20, 20)); - QCOMPARE(scene.itemAt(0, 0), (QGraphicsItem *)ellipse); - QCOMPARE(scene.itemAt(-10, -10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(-9.9, 0), (QGraphicsItem *)ellipse); - QCOMPARE(scene.itemAt(-10, 10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(0, -9.9), (QGraphicsItem *)ellipse); - QCOMPARE(scene.itemAt(0, 9.9), (QGraphicsItem *)ellipse); - QCOMPARE(scene.itemAt(10, -10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(9.9, 0), (QGraphicsItem *)ellipse); - QCOMPARE(scene.itemAt(10, 10), (QGraphicsItem *)0); + QCOMPARE(itemAt(scene, 0, 0), (QGraphicsItem *)ellipse); + QVERIFY(scene.items(QPointF(-10, -10)).isEmpty()); + QCOMPARE(itemAt(scene, -9.9, 0), (QGraphicsItem *)ellipse); + QVERIFY(scene.items(QPointF(-10, 10)).isEmpty()); + QCOMPARE(itemAt(scene, 0, -9.9), (QGraphicsItem *)ellipse); + QCOMPARE(itemAt(scene, 0, 9.9), (QGraphicsItem *)ellipse); + QVERIFY(scene.items(QPointF(10, -10)).isEmpty()); + QCOMPARE(itemAt(scene, 9.9, 0), (QGraphicsItem *)ellipse); + QVERIFY(scene.items(QPointF(10, 10)).isEmpty()); } void tst_QGraphicsScene::addLine() @@ -1144,15 +1146,15 @@ void tst_QGraphicsScene::addLine() QCOMPARE(line->pos(), QPointF()); QCOMPARE(line->pen(), pen); QCOMPARE(line->line(), QLineF(-10, -10, 20, 20)); - QCOMPARE(scene.itemAt(0, 0), (QGraphicsItem *)line); - QCOMPARE(scene.itemAt(-10, -10), (QGraphicsItem *)line); - QCOMPARE(scene.itemAt(-9.9, 0), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(-10, 10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(0, -9.9), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(0, 9.9), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(10, -10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(9.9, 0), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(10, 10), (QGraphicsItem *)line); + QCOMPARE(itemAt(scene, 0, 0), (QGraphicsItem *)line); + QCOMPARE(itemAt(scene, -10, -10), (QGraphicsItem *)line); + QVERIFY(scene.items(QPointF(-9.9, 0)).isEmpty()); + QVERIFY(scene.items(QPointF(-10, 10)).isEmpty()); + QVERIFY(scene.items(QPointF(0, -9.9)).isEmpty()); + QVERIFY(scene.items(QPointF(0, 9.9)).isEmpty()); + QVERIFY(scene.items(QPointF(10, -10)).isEmpty()); + QVERIFY(scene.items(QPointF(9.9, 0)).isEmpty()); + QCOMPARE(itemAt(scene, 10, 10), (QGraphicsItem *)line); } void tst_QGraphicsScene::addPath() @@ -1170,27 +1172,27 @@ void tst_QGraphicsScene::addPath() path->setPen(QPen(Qt::red, 0)); - QCOMPARE(scene.itemAt(0, 0), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(-9.9, 0), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(9.9, 0), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(0, -9.9), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(0, 9.9), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(0, 30), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(-9.9, 30), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(9.9, 30), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(0, 20.1), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(0, 39.9), (QGraphicsItem *)path); - QCOMPARE(scene.itemAt(-10, -10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(10, -10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(-10, 10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(10, 10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(-10, 20), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(10, 20), (QGraphicsItem *)0); + QCOMPARE(itemAt(scene, 0, 0), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, -9.9, 0), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, 9.9, 0), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, 0, -9.9), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, 0, 9.9), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, 0, 30), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, -9.9, 30), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, 9.9, 30), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, 0, 20.1), (QGraphicsItem *)path); + QCOMPARE(itemAt(scene, 0, 39.9), (QGraphicsItem *)path); + QVERIFY(scene.items(QPointF(-10, -10)).isEmpty()); + QVERIFY(scene.items(QPointF(10, -10)).isEmpty()); + QVERIFY(scene.items(QPointF(-10, 10)).isEmpty()); + QVERIFY(scene.items(QPointF(10, 10)).isEmpty()); + QVERIFY(scene.items(QPointF(-10, 20)).isEmpty()); + QVERIFY(scene.items(QPointF(10, 20)).isEmpty()); if (sizeof(qreal) != sizeof(double)) QWARN("Skipping test because of rounding errors when qreal != double"); else - QCOMPARE(scene.itemAt(-10, 30), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(10.1, 30), (QGraphicsItem *)0); + QVERIFY(scene.items(QPointF(-10, 30)).isEmpty()); + QVERIFY(scene.items(QPointF(10.1, 30)).isEmpty()); } void tst_QGraphicsScene::addPixmap() @@ -1201,16 +1203,17 @@ void tst_QGraphicsScene::addPixmap() QCOMPARE(pixmap->pos(), QPointF()); QCOMPARE(pixmap->pixmap(), pix); - QCOMPARE(scene.itemAt(0, 0), (QGraphicsItem *)pixmap); - QCOMPARE(scene.itemAt(pix.width() - 1, 0), (QGraphicsItem *)pixmap); - QCOMPARE(scene.itemAt(0, pix.height() - 1), (QGraphicsItem *)pixmap); - QCOMPARE(scene.itemAt(pix.width() - 1, pix.height() - 1), (QGraphicsItem *)pixmap); - QCOMPARE(scene.itemAt(-1, -1), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(pix.width() - 1, -1), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(-1, pix.height() - 1), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(pix.width(), pix.height()), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(0, pix.height()), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(pix.width(), 0), (QGraphicsItem *)0); + QCOMPARE(itemAt(scene, 0, 0), (QGraphicsItem *)pixmap); + QCOMPARE(itemAt(scene, pix.width() - 1, 0), (QGraphicsItem *)pixmap); + QCOMPARE(itemAt(scene, 0, pix.height() - 1), (QGraphicsItem *)pixmap); + QCOMPARE(itemAt(scene, pix.width() - 1, pix.height() - 1), (QGraphicsItem *)pixmap); + + QVERIFY(scene.items(QPointF(-1, -1)).isEmpty()); + QVERIFY(scene.items(QPointF(pix.width() - 1, -1)).isEmpty()); + QVERIFY(scene.items(QPointF(-1, pix.height() - 1)).isEmpty()); + QVERIFY(scene.items(QPointF(pix.width(), pix.height())).isEmpty()); + QVERIFY(scene.items(QPointF(0, pix.height())).isEmpty()); + QVERIFY(scene.items(QPointF(pix.width(), 0)).isEmpty()); } void tst_QGraphicsScene::addRect() @@ -1225,15 +1228,15 @@ void tst_QGraphicsScene::addRect() rect->setPen(QPen(Qt::red, 0)); - QCOMPARE(scene.itemAt(0, 0), (QGraphicsItem *)rect); - QCOMPARE(scene.itemAt(-10, -10), (QGraphicsItem *)rect); - QCOMPARE(scene.itemAt(-9.9, 0), (QGraphicsItem *)rect); - QCOMPARE(scene.itemAt(-10, 10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(0, -9.9), (QGraphicsItem *)rect); - QCOMPARE(scene.itemAt(0, 9.9), (QGraphicsItem *)rect); - QCOMPARE(scene.itemAt(10, -10), (QGraphicsItem *)0); - QCOMPARE(scene.itemAt(9.9, 0), (QGraphicsItem *)rect); - QCOMPARE(scene.itemAt(10, 10), (QGraphicsItem *)0); + QCOMPARE(itemAt(scene, 0, 0), (QGraphicsItem *)rect); + QCOMPARE(itemAt(scene, -10, -10), (QGraphicsItem *)rect); + QCOMPARE(itemAt(scene, -9.9, 0), (QGraphicsItem *)rect); + QVERIFY(scene.items(QPointF(-10, 10)).isEmpty()); + QCOMPARE(itemAt(scene, 0, -9.9), (QGraphicsItem *)rect); + QCOMPARE(itemAt(scene, 0, 9.9), (QGraphicsItem *)rect); + QVERIFY(scene.items(QPointF(10, -10)).isEmpty()); + QCOMPARE(itemAt(scene, 9.9, 0), (QGraphicsItem *)rect); + QVERIFY(scene.items(QPointF(10, 10)).isEmpty()); } void tst_QGraphicsScene::addText() @@ -1247,19 +1250,19 @@ void tst_QGraphicsScene::addText() void tst_QGraphicsScene::removeItem() { -#if defined(Q_OS_WINCE) && !defined(GWES_ICONCURS) +#if (defined(Q_OS_WINCE) && !defined(GWES_ICONCURS)) || defined(Q_OS_ANDROID) QSKIP("No mouse cursor support"); #endif QGraphicsScene scene; QGraphicsItem *item = scene.addRect(QRectF(0, 0, 10, 10)); - QCOMPARE(scene.itemAt(0, 0), item); // forces indexing + QCOMPARE(itemAt(scene, 0, 0), item); // forces indexing scene.removeItem(item); - QCOMPARE(scene.itemAt(0, 0), (QGraphicsItem *)0); + QVERIFY(scene.items(QPointF(0, 0)).isEmpty()); delete item; QGraphicsItem *item2 = scene.addRect(QRectF(0, 0, 10, 10)); item2->setFlag(QGraphicsItem::ItemIsSelectable); - QCOMPARE(scene.itemAt(0, 0), item2); + QCOMPARE(itemAt(scene, 0, 0), item2); // Removing a selected item QVERIFY(scene.selectedItems().isEmpty()); @@ -1289,7 +1292,7 @@ void tst_QGraphicsScene::removeItem() QTRY_VERIFY(hoverItem->isHovered); scene.removeItem(hoverItem); - hoverItem->setAcceptsHoverEvents(false); + hoverItem->setAcceptHoverEvents(false); scene.addItem(hoverItem); QTRY_VERIFY(!hoverItem->isHovered); } @@ -1801,7 +1804,7 @@ void tst_QGraphicsScene::createItemGroup() scene.destroyItemGroup(group); QGraphicsItemGroup *emptyGroup = scene.createItemGroup(QList<QGraphicsItem *>()); - QCOMPARE(emptyGroup->children(), QList<QGraphicsItem *>()); + QVERIFY(emptyGroup->childItems().isEmpty()); QVERIFY(!emptyGroup->parentItem()); QCOMPARE(emptyGroup->scene(), &scene); } @@ -2140,7 +2143,7 @@ void tst_QGraphicsScene::mouseEventPropagation_mouseMove() { Scene scene; scene.addRect(QRectF(5, 0, 12, 12)); - scene.addRect(QRectF(15, 0, 12, 12))->setAcceptsHoverEvents(true); + scene.addRect(QRectF(15, 0, 12, 12))->setAcceptHoverEvents(true); for (int i = 0; i < 30; ++i) { QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMouseMove); event.setScenePos(QPointF(i, 5)); @@ -2621,8 +2624,7 @@ void tst_QGraphicsScene::render() scene.render(&painter, targetRect, sourceRect, aspectRatioMode); painter.end(); - const QString renderPath = QLatin1String(SRCDIR) + "/testData/render"; - QString fileName = renderPath + QString("/%1.png").arg(QTest::currentDataTag()); + QString fileName = QFINDTESTDATA(QString("/testData/render/%1.png").arg(QTest::currentDataTag())); QImage original(fileName); QVERIFY(!original.isNull()); @@ -2673,6 +2675,10 @@ void tst_QGraphicsScene::render() void tst_QGraphicsScene::renderItemsWithNegativeWidthOrHeight() { +#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) + QSKIP("Test only works on platforms with resizable windows"); +#endif + QGraphicsScene scene(0, 0, 150, 150); // Add item with negative width. @@ -2706,6 +2712,7 @@ void tst_QGraphicsScene::renderItemsWithNegativeWidthOrHeight() QCOMPARE(actual, expected); } +#ifndef QT_NO_CONTEXTMENU void tst_QGraphicsScene::contextMenuEvent() { QGraphicsScene scene; @@ -2747,6 +2754,10 @@ protected: void tst_QGraphicsScene::contextMenuEvent_ItemIgnoresTransformations() { +#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) + QSKIP("Test fails on some Android devices (QTBUG-44430)"); +#endif + QGraphicsScene scene(0, 0, 200, 200); ContextMenuItem *item = new ContextMenuItem; item->setFlag(QGraphicsItem::ItemIgnoresTransformations); @@ -2788,6 +2799,7 @@ void tst_QGraphicsScene::contextMenuEvent_ItemIgnoresTransformations() QVERIFY(!event.isAccepted()); } } +#endif // QT_NO_CONTEXTMENU void tst_QGraphicsScene::update() { @@ -2800,7 +2812,7 @@ void tst_QGraphicsScene::update() rect->setPos(-100, -100); // This function forces indexing - scene.itemAt(0, 0); + itemAt(scene, 0, 0); qRegisterMetaType<QList<QRectF> >("QList<QRectF>"); QSignalSpy spy(&scene, SIGNAL(changed(QList<QRectF>))); @@ -2809,7 +2821,7 @@ void tst_QGraphicsScene::update() scene.update(); // This function forces a purge, which will post an update signal - scene.itemAt(0, 0); + itemAt(scene, 0, 0); // This will process the pending update QApplication::instance()->processEvents(); @@ -3257,10 +3269,11 @@ void tst_QGraphicsScene::tabFocus_sceneWithNestedFocusWidgets() FocusWidget *widget1_1 = new FocusWidget; FocusWidget *widget1_2 = new FocusWidget; widget1_1->setParentItem(widget1); - widget1_1->scale(0.5, 0.5); + const QTransform scale(QTransform::fromScale(0.5, 0.5)); + widget1_1->setTransform(scale, true); widget1_1->setPos(0, widget1->boundingRect().height() / 2); widget1_2->setParentItem(widget1); - widget1_2->scale(0.5, 0.5); + widget1_2->setTransform(scale, true); widget1_2->setPos(widget1->boundingRect().width() / 2, widget1->boundingRect().height() / 2); FocusWidget *widget2 = new FocusWidget; @@ -3520,7 +3533,7 @@ void tst_QGraphicsScene::task250680_childClip() QVERIFY(QPathCompare::comparePaths(rect->clipPath().simplified(), path)); QCOMPARE(scene.items(QRectF(320, 240, 5, 5)).size(), 2); - rect->rotate(45); + rect->setTransform(QTransform().rotate(45), true); QCOMPARE(scene.items(QRectF(320, 240, 5, 5)).size(), 2); } @@ -3599,20 +3612,20 @@ void tst_QGraphicsScene::sorting() // view.show(); qDebug() << "items: {"; - foreach (QGraphicsItem *item, scene.items(32, 31, 4, 55)) + foreach (QGraphicsItem *item, scene.items(QRectF(32, 31, 4, 55))) qDebug() << "\t" << item->data(0).toString(); qDebug() << "}"; - QCOMPARE(scene.items(32, 31, 4, 55), + QCOMPARE(scene.items(QRectF(32, 31, 4, 55)), QList<QGraphicsItem *>() << c_1_2 << c_1_1_1 << c_1 << t_1); - QCOMPARE(scene.items(-53, 47, 136, 3), + QCOMPARE(scene.items(QRectF(-53, 47, 136, 3)), QList<QGraphicsItem *>() << c_2_2 << c_2_1 << c_2 << c_1_2 << c_1_1 << c_1 << t_1); - QCOMPARE(scene.items(-23, 79, 104, 3), + QCOMPARE(scene.items(QRectF(-23, 79, 104, 3)), QList<QGraphicsItem *>() << c_2_1_1 << c_1_1_1); - QCOMPARE(scene.items(-26, -3, 92, 79), + QCOMPARE(scene.items(QRectF(-26, -3, 92, 79)), QList<QGraphicsItem *>() << c_2_2 << c_2_1_1 << c_2_1 << c_2 << c_1_2 << c_1_1_1 << c_1_1 << c_1 @@ -4014,6 +4027,10 @@ void tst_QGraphicsScene::polishItems2() void tst_QGraphicsScene::isActive() { +#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) + QSKIP("Fails on Android (QTBUG-44430)"); +#endif + QGraphicsScene scene1; QVERIFY(!scene1.isActive()); QGraphicsScene scene2; @@ -4376,7 +4393,7 @@ void tst_QGraphicsScene::taskQT657_paintIntoCacheWithTransparentParts() QGraphicsProxyWidget *proxy = scene->addWidget(w); proxy->setCacheMode(QGraphicsItem::DeviceCoordinateCache); - proxy->rotate(15); + proxy->setTransform(QTransform().rotate(15), true); view->show(); QVERIFY(QTest::qWaitForWindowExposed(view)); @@ -4422,7 +4439,7 @@ void tst_QGraphicsScene::taskQTBUG_7863_paintIntoCacheWithTransparentParts() scene->addItem(backItem); rectItem->setCacheMode(QGraphicsItem::DeviceCoordinateCache); - backItem->rotate(15); + backItem->setTransform(QTransform().rotate(15), true); view->show(); QVERIFY(QTest::qWaitForWindowExposed(view)); @@ -4464,7 +4481,7 @@ void tst_QGraphicsScene::taskQTBUG_7863_paintIntoCacheWithTransparentParts() scene->addItem(rectItem); rectItem->setCacheMode(QGraphicsItem::ItemCoordinateCache); - rectItem->rotate(15); + rectItem->setTransform(QTransform().rotate(15), true); view->show(); QVERIFY(QTest::qWaitForWindowExposed(view)); @@ -4505,7 +4522,7 @@ void tst_QGraphicsScene::taskQTBUG_7863_paintIntoCacheWithTransparentParts() scene->addItem(rectItem); rectItem->setCacheMode(QGraphicsItem::ItemCoordinateCache); - rectItem->rotate(15); + rectItem->setTransform(QTransform().rotate(15), true); view->show(); QVERIFY(QTest::qWaitForWindowExposed(view)); @@ -4609,41 +4626,41 @@ void tst_QGraphicsScene::focusItemChangedSignal() QCOMPARE(spy.count(), 1); QList<QVariant> arguments = spy.takeFirst(); QCOMPARE(arguments.size(), 3); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)0); - QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::OtherFocusReason); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)0); + QCOMPARE(qvariant_cast<Qt::FocusReason>(arguments.at(2)), Qt::OtherFocusReason); QVERIFY(topLevelItem2->hasFocus()); scene.clearFocus(); QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.size(), 3); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)0); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2); - QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::OtherFocusReason); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)0); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2); + QCOMPARE(qvariant_cast<Qt::FocusReason>(arguments.at(2)), Qt::OtherFocusReason); scene.setFocus(Qt::MenuBarFocusReason); QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.size(), 3); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)0); - QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::MenuBarFocusReason); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)0); + QCOMPARE(qvariant_cast<Qt::FocusReason>(arguments.at(2)), Qt::MenuBarFocusReason); for (int i = 0; i < 3; ++i) { topLevelItem1->setFocus(Qt::TabFocusReason); arguments = spy.takeFirst(); QCOMPARE(arguments.size(), 3); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem1); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2); - QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::TabFocusReason); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem1); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2); + QCOMPARE(qvariant_cast<Qt::FocusReason>(arguments.at(2)), Qt::TabFocusReason); topLevelItem2->setFocus(Qt::TabFocusReason); arguments = spy.takeFirst(); QCOMPARE(arguments.size(), 3); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem1); - QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::TabFocusReason); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem1); + QCOMPARE(qvariant_cast<Qt::FocusReason>(arguments.at(2)), Qt::TabFocusReason); } // The following two are unexpected, but fixing this (i.e., losing and gaining focus @@ -4664,9 +4681,9 @@ void tst_QGraphicsScene::focusItemChangedSignal() QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.size(), 3); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel1); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2); - QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel1); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2); + QCOMPARE(qvariant_cast<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason); QGraphicsRectItem *panel2 = new QGraphicsRectItem; panel2->setFlags(QGraphicsItem::ItemIsPanel | QGraphicsItem::ItemIsFocusable); @@ -4678,17 +4695,17 @@ void tst_QGraphicsScene::focusItemChangedSignal() QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.size(), 3); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel2); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)panel1); - QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel2); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)panel1); + QCOMPARE(qvariant_cast<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason); scene.setActivePanel(panel1); QCOMPARE(spy.count(), 1); arguments = spy.takeFirst(); QCOMPARE(arguments.size(), 3); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel1); - QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)panel2); - QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel1); + QCOMPARE(qvariant_cast<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)panel2); + QCOMPARE(qvariant_cast<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason); } } |