diff -r 56cd8111b7f7 -r 41300fa6a67c src/gui/graphicsview/qgraphicswidget_p.cpp --- a/src/gui/graphicsview/qgraphicswidget_p.cpp Tue Jan 26 12:42:25 2010 +0200 +++ b/src/gui/graphicsview/qgraphicswidget_p.cpp Tue Feb 02 00:43:10 2010 +0200 @@ -743,7 +743,7 @@ /** * is called after a reparent has taken place to fix up the focus chain(s) */ -void QGraphicsWidgetPrivate::fixFocusChainBeforeReparenting(QGraphicsWidget *newParent, QGraphicsScene *newScene) +void QGraphicsWidgetPrivate::fixFocusChainBeforeReparenting(QGraphicsWidget *newParent, QGraphicsScene *oldScene, QGraphicsScene *newScene) { Q_Q(QGraphicsWidget); @@ -789,7 +789,7 @@ // update tabFocusFirst for oldScene if the item is going to be removed from oldScene if (newParent) newScene = newParent->scene(); - QGraphicsScene *oldScene = q->scene(); + if (oldScene && newScene != oldScene) oldScene->d_func()->tabFocusFirst = firstOld;