diff options
-rw-r--r-- | src/widgets/graphicsview/qgraphicsitem.cpp | 1 | ||||
-rw-r--r-- | tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp index f9b8cb83da..3ba9b89e34 100644 --- a/src/widgets/graphicsview/qgraphicsitem.cpp +++ b/src/widgets/graphicsview/qgraphicsitem.cpp @@ -1436,6 +1436,7 @@ QGraphicsItem::~QGraphicsItem() #endif clearFocus(); + setFocusProxy(0); // Update focus scope item ptr. QGraphicsItem *p = d_ptr->parent; diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp index 687d44808d..2d379d3c07 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp @@ -8485,7 +8485,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); |