diff options
Diffstat (limited to 'src/kitemviews/kitemlistcontainer.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistcontainer.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 2f9f5d401..65250832b 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -12,6 +12,9 @@ #include "kitemlistview.h" #include "private/kitemlistsmoothscroller.h" +#ifndef QT_NO_ACCESSIBILITY +#include <QAccessibleEvent> +#endif #include <QApplication> #include <QFontMetrics> #include <QGraphicsScene> @@ -195,6 +198,17 @@ void KItemListContainer::focusInEvent(QFocusEvent *event) KItemListView *view = m_controller->view(); if (view) { QApplication::sendEvent(view, event); + + // We need to set the focus to the view or accessibility software will only announce the container (which has no information available itself). + // For some reason actively setting the focus to the view needs to be delayed or the focus will immediately go back to this container. + QTimer::singleShot(0, this, [this, view]() { + view->setFocus(); +#ifndef QT_NO_ACCESSIBILITY + QAccessibleEvent accessibleFocusInEvent(this, QAccessible::Focus); + accessibleFocusInEvent.setChild(0); + QAccessible::updateAccessibility(&accessibleFocusInEvent); +#endif + }); } } |
