summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorJoão de Deus Morgado <joao.deusmorgado@kdab.com>2015-06-11 07:40:31 +0100
committerAlex Blasche <alexander.blasche@theqtcompany.com>2016-06-07 08:44:34 +0000
commit1f8a2ff41da88c6a87d6b6509b6db2b22a70e28d (patch)
tree05cdf08f8d1fa7257aa586dc9a240c48d5d87e07 /tests/auto/widgets
parent87c426d5f428660b2af98a10e88f6b68a60bd59d (diff)
Fix Infinite loop in QGraphicsScene::focusNextPrevChild
Task-number: QTBUG-42915 Change-Id: Ie380e0d77453bcdb68e92dcffe8278f169da27bc Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
index 38b4230409..d95f6e408e 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -267,6 +267,7 @@ private slots:
void taskQT_3674_doNotCrash();
void taskQTBUG_15977_renderWithDeviceCoordinateCache();
void taskQTBUG_16401_focusItem();
+ void taskQTBUG_42915_focusNextPrevChild();
};
void tst_QGraphicsScene::cleanup()
@@ -4815,5 +4816,29 @@ void tst_QGraphicsScene::taskQTBUG_16401_focusItem()
QVERIFY(!scene.focusItem());
}
+void tst_QGraphicsScene::taskQTBUG_42915_focusNextPrevChild()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ scene.setSceneRect(1, 1, 198, 198);
+ view.setFocus();
+
+ QGraphicsWidget *widget1 = new QGraphicsWidget();
+ QGraphicsRectItem *rect1 = new QGraphicsRectItem(-50, -50, 100, 100, widget1);
+ rect1->setBrush(Qt::blue);
+ scene.addItem(widget1);
+ widget1->setPos(100, 100);
+ widget1->setFlags(QGraphicsItem::ItemIsPanel);
+
+ QGraphicsWidget *widget2 = new QGraphicsWidget(widget1);
+ widget2->setFocusPolicy(Qt::NoFocus);
+
+ view.show();
+ QApplication::setActiveWindow(&view);
+ QVERIFY(QTest::qWaitForWindowActive(&view));
+
+ QTest::keyEvent(QTest::Click, &view, Qt::Key_Tab);
+}
+
QTEST_MAIN(tst_QGraphicsScene)
#include "tst_qgraphicsscene.moc"