[tabbox] Fix forwarding grabbed key event to QQuickItem

We need to send the event to a QQuickItem which accepts focus. Just
sending it to the Window or to the contentItem doesn't work as there is
no activeFocusItem (might be related to having the keyboard grabbed).

We try to send the event to all children of the Window's content item.
There should hopefully be one item which accepts the event and properly
reacts on cursor keys.

REVIEW: 118471
This commit is contained in:
Martin Gräßlin 2014-06-02 17:21:53 +02:00
parent 17ca566154
commit d1798202e8

View file

@ -489,10 +489,16 @@ const QModelIndex& TabBoxHandler::currentIndex() const
void TabBoxHandler::grabbedKeyEvent(QKeyEvent* event) const void TabBoxHandler::grabbedKeyEvent(QKeyEvent* event) const
{ {
if (!d->m_mainItem) { if (!d->m_mainItem || !d->window()) {
return; return;
} }
QApplication::sendEvent(d->window(), event); const QList<QQuickItem*> items = d->window()->contentItem()->findChildren<QQuickItem*>(QString(), Qt::FindDirectChildrenOnly);
for (QQuickItem *item : items) {
d->window()->sendEvent(item, event);
if (event->isAccepted()) {
break;
}
}
} }
bool TabBoxHandler::containsPos(const QPoint& pos) const bool TabBoxHandler::containsPos(const QPoint& pos) const