]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.cpp
Fix accessibility ancestor tree
[dolphin.git] / src / kitemviews / kitemlistview.cpp
index 38d21ff5e73b23df49c732027680a9b5cc4e83af..457c02ec5f5253f70f504ee50b76384aa7b8ec52 100644 (file)
@@ -50,9 +50,14 @@ QAccessibleInterface *accessibleInterfaceFactory(const QString &key, QObject *ob
     Q_UNUSED(key)
 
     if (KItemListContainer *container = qobject_cast<KItemListContainer *>(object)) {
+        if (auto controller = container->controller(); controller) {
+            if (KItemListView *view = controller->view(); view && view->accessibleParent()) {
+                return view->accessibleParent();
+            }
+        }
         return new KItemListContainerAccessible(container);
     } else if (KItemListView *view = qobject_cast<KItemListView *>(object)) {
-        return new KItemListViewAccessible(view);
+        return new KItemListViewAccessible(view, view->accessibleParent());
     }
 
     return nullptr;
@@ -337,6 +342,19 @@ KItemListGroupHeaderCreatorBase *KItemListView::groupHeaderCreator() const
     return m_groupHeaderCreator;
 }
 
+#ifndef QT_NO_ACCESSIBILITY
+void KItemListView::setAccessibleParentsObject(KItemListContainer *accessibleParentsObject)
+{
+    Q_ASSERT(!m_accessibleParent);
+    m_accessibleParent = new KItemListContainerAccessible(accessibleParentsObject);
+}
+KItemListContainerAccessible *KItemListView::accessibleParent()
+{
+    Q_CHECK_PTR(m_accessibleParent); // We always want the accessibility tree/hierarchy to be complete.
+    return m_accessibleParent;
+}
+#endif
+
 QSizeF KItemListView::itemSize() const
 {
     return m_itemSize;