summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview
diff options
context:
space:
mode:
authorAndreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com>2009-07-29 01:21:09 (GMT)
committerAndreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com>2009-07-29 03:09:31 (GMT)
commite841cc37bf7fde58e7b0ffc024d31f6a46a83745 (patch)
treec61dd1dbb795e366d9c774694aa62ce05ed330c6 /src/gui/graphicsview
parent509a04338bc2b556c15f494a73947e82e3cdcc62 (diff)
downloadQt-e841cc37bf7fde58e7b0ffc024d31f6a46a83745.zip
Qt-e841cc37bf7fde58e7b0ffc024d31f6a46a83745.tar.gz
Qt-e841cc37bf7fde58e7b0ffc024d31f6a46a83745.tar.bz2
Fix remaining autotest failures in tst_QGraphicsWidget
Change f68fed3 introduced a few regressions in the QGraphicsWidget autotests. It turned out those autotests relied on behavior that this fix "fixed". The exact bugs were 1) that setting focus on a window or a child of a window that isn't active will automatically give that item focus, despite that its window is inactive (in contrast it should just set up subfocus and give the item focus when the window is activated), and 2) that adding a window to a scene that is active did not immediately activate that window. So one fix in the test and one in QGraphicsScene. The autotests were modified so that the respective tests operate on an active scene (by assigning the scene to an active view). The change in QGraphicsScene ensures that the first window that gets added to an active scene that does not have any active windows already, automatically gets activated. Reviewed-by: Michael Brasser
Diffstat (limited to 'src/gui/graphicsview')
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index f223cbe..e54efe0 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -2356,6 +2356,10 @@ void QGraphicsScene::addItem(QGraphicsItem *item)
// Deliver post-change notification
item->itemChange(QGraphicsItem::ItemSceneHasChanged, newSceneVariant);
+ // Auto-activate the first inactive window if the scene is active.
+ if (d->activationRefCount > 0 && !d->activeWindow && item->isWindow())
+ setActiveWindow(static_cast<QGraphicsWidget *>(item));
+
// Ensure that newly added items that have subfocus set, gain
// focus automatically if there isn't a focus item already.
if (!d->focusItem && item->focusItem())