]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistcontainer.cpp
Overhaul main view accessibility
[dolphin.git] / src / kitemviews / kitemlistcontainer.cpp
index 2f9f5d401b78de2df8b5472e9107c603672421dc..65250832b023efe5e65b258b20dcaf6a0ee89651 100644 (file)
@@ -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
+        });
     }
 }