diff -r 5dc02b23752f -r 3e2da88830cd src/gui/graphicsview/qgraphicswidget_p.cpp --- a/src/gui/graphicsview/qgraphicswidget_p.cpp Tue Jul 06 15:10:48 2010 +0300 +++ b/src/gui/graphicsview/qgraphicswidget_p.cpp Wed Aug 18 10:37:55 2010 +0300 @@ -761,7 +761,7 @@ QGraphicsWidget *firstOld = 0; bool wasPreviousNew = true; - + while (w != q) { bool isCurrentNew = q->isAncestorOf(w); if (isCurrentNew) { @@ -796,7 +796,7 @@ newScene = newParent->scene(); if (oldScene && newScene != oldScene) - oldScene->d_func()->tabFocusFirst = firstOld; + oldScene->d_func()->tabFocusFirst = (firstOld && firstOld->scene() == oldScene) ? firstOld : 0; QGraphicsItem *topLevelItem = newParent ? newParent->topLevelItem() : 0; QGraphicsWidget *topLevel = 0;