summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/graphicsview/qgraphicsitem
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/graphicsview/qgraphicsitem')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index cd246ac25d..a0bd7f72a4 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -8486,7 +8486,9 @@ void tst_QGraphicsItem::focusProxyDeletion()
rect2 = new QGraphicsRectItem;
rect->setFocusProxy(rect2);
+ QGraphicsItem **danglingFocusProxyRef = &rect->d_ptr->focusProxy;
delete rect; // don't crash
+ QVERIFY(!rect2->d_ptr->focusProxyRefs.contains(danglingFocusProxyRef));
rect = new QGraphicsRectItem;
rect->setFocusProxy(rect2);
@@ -9263,6 +9265,45 @@ void tst_QGraphicsItem::focusScope()
scope3->setFocus();
QVERIFY(scope3->hasFocus());
+ // clearFocus() on a focus scope will remove focus from its children.
+ scope1->clearFocus();
+ QVERIFY(!scope1->hasFocus());
+ QVERIFY(!scope2->hasFocus());
+ QVERIFY(!scope3->hasFocus());
+
+ scope1->setFocus();
+ QVERIFY(!scope1->hasFocus());
+ QVERIFY(!scope2->hasFocus());
+ QVERIFY(scope3->hasFocus());
+
+ scope2->clearFocus();
+ QVERIFY(scope1->hasFocus());
+ QVERIFY(!scope2->hasFocus());
+ QVERIFY(!scope3->hasFocus());
+
+ scope2->setFocus();
+ QVERIFY(!scope1->hasFocus());
+ QVERIFY(!scope2->hasFocus());
+ QVERIFY(scope3->hasFocus());
+
+ // Focus cleared while a parent doesn't have focus remains cleared
+ // when the parent regains focus.
+ scope1->clearFocus();
+ scope3->clearFocus();
+ QVERIFY(!scope1->hasFocus());
+ QVERIFY(!scope2->hasFocus());
+ QVERIFY(!scope3->hasFocus());
+
+ scope1->setFocus();
+ QVERIFY(!scope1->hasFocus());
+ QVERIFY(scope2->hasFocus());
+ QVERIFY(!scope3->hasFocus());
+
+ scope3->setFocus();
+ QVERIFY(!scope1->hasFocus());
+ QVERIFY(!scope2->hasFocus());
+ QVERIFY(scope3->hasFocus());
+
QGraphicsRectItem *rect4 = new QGraphicsRectItem;
rect4->setData(0, "rect4");
rect4->setParentItem(scope3);