summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview/qgraphicsview.cpp
diff options
context:
space:
mode:
authorAndreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com>2009-09-11 12:10:12 (GMT)
committerAndreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com>2009-09-15 09:32:07 (GMT)
commitc8bf9bd17a4520eefe4306b7b1bb4f93fb296d80 (patch)
tree0126827048c3740a213d5be39b89074bd4d9ae01 /src/gui/graphicsview/qgraphicsview.cpp
parenta06c7db92ff13a1f8a353851a586ae12755e7c6c (diff)
downloadQt-c8bf9bd17a4520eefe4306b7b1bb4f93fb296d80.zip
Qt-c8bf9bd17a4520eefe4306b7b1bb4f93fb296d80.tar.gz
Qt-c8bf9bd17a4520eefe4306b7b1bb4f93fb296d80.tar.bz2
Support for focus scopes: QGraphicsItem::ItemIsFocusScope.
This feature is essential for Declarative UI, but does not add much value for C++ developers. A FocusScope provides a stack of focused widgets, and it ensures that the topmost item on the stack has focus if any of the items in the stack gains focus. When the topmost loses focus, focus is passed to the "parent" focus scope, and so on. You can get almost the same behavior using panels (ItemIsPanel), except panels impose other behavior, like stopping clickfocus propagation, and stopping event propagation in general. In a QML world you would typically use FocusScope for controlling focus locally, and panels when you need to maintain separate focus stacks. Reviewed-by: akennedy
Diffstat (limited to 'src/gui/graphicsview/qgraphicsview.cpp')
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 1ea0a33..b0829c5 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -1537,6 +1537,9 @@ void QGraphicsView::setScene(QGraphicsScene *scene)
}
d->updateInputMethodSensitivity();
+
+ if (d->scene && hasFocus())
+ d->scene->setFocus();
}
/*!
@@ -2607,7 +2610,6 @@ bool QGraphicsView::event(QEvent *event)
bool QGraphicsView::viewportEvent(QEvent *event)
{
Q_D(QGraphicsView);
-
if (!d->scene)
return QAbstractScrollArea::viewportEvent(event);