From 1f8a2ff41da88c6a87d6b6509b6db2b22a70e28d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20de=20Deus=20Morgado?= Date: Thu, 11 Jun 2015 07:40:31 +0100 Subject: Fix Infinite loop in QGraphicsScene::focusNextPrevChild Task-number: QTBUG-42915 Change-Id: Ie380e0d77453bcdb68e92dcffe8278f169da27bc Reviewed-by: Alex Blasche --- src/widgets/graphicsview/qgraphicsscene.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp index 7b67f332e1..da5c2849ae 100644 --- a/src/widgets/graphicsview/qgraphicsscene.cpp +++ b/src/widgets/graphicsview/qgraphicsscene.cpp @@ -5430,12 +5430,14 @@ bool QGraphicsScene::focusNextPrevChild(bool next) return true; } if (d->activePanel->isWidget()) { - QGraphicsWidget *fw = static_cast(d->activePanel)->d_func()->focusNext; + QGraphicsWidget *test = static_cast(d->activePanel); + QGraphicsWidget *fw = next ? test->d_func()->focusNext : test->d_func()->focusPrev; do { if (fw->focusPolicy() & Qt::TabFocus) { setFocusItem(fw, next ? Qt::TabFocusReason : Qt::BacktabFocusReason); return true; } + fw = next ? fw->d_func()->focusNext : fw->d_func()->focusPrev; } while (fw != d->activePanel); } } -- cgit v1.2.3