summaryrefslogtreecommitdiffstats
path: root/src/widgets/graphicsview/qgraphicsscene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/graphicsview/qgraphicsscene.cpp')
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp
index 8a0b983c73..88cccb5118 100644
--- a/src/widgets/graphicsview/qgraphicsscene.cpp
+++ b/src/widgets/graphicsview/qgraphicsscene.cpp
@@ -637,6 +637,15 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
if (item == lastActivePanel)
lastActivePanel = 0;
+ // Change tabFocusFirst to the next widget in focus chain if removing the current one.
+ if (item == tabFocusFirst) {
+ QGraphicsWidgetPrivate *wd = tabFocusFirst->d_func();
+ if (wd->focusNext && wd->focusNext != tabFocusFirst && wd->focusNext->scene() == q)
+ tabFocusFirst = wd->focusNext;
+ else
+ tabFocusFirst = 0;
+ }
+
// Cancel active touches
{
QMap<int, QGraphicsItem *>::iterator it = itemForTouchPointId.begin();