]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.cpp
Ported KIcon to QIcon
[dolphin.git] / src / kitemviews / kitemlistview.cpp
index 39aed1620779981f583130530e8cf189937e7117..8c93361e0db732378156cfcb37e252634eaf6956 100644 (file)
 
 #include <algorithm>
 
-#if 0
 #include "kitemlistviewaccessible.h"
-#else
-#define QT_NO_ACCESSIBILITY 1
-#pragma message("TODO: port accessibility to Qt5")
-#endif
 
 namespace {
     // Time in ms until reaching the autoscroll margin triggers
@@ -63,7 +58,7 @@ namespace {
 }
 
 #ifndef QT_NO_ACCESSIBILITY
-QAccessibleInterface* accessibleInterfaceFactory(const QString &key, QObject *object)
+QAccessibleInterface* accessibleInterfaceFactory(const QString& key, QObject* object)
 {
     Q_UNUSED(key)
 
@@ -941,7 +936,7 @@ void KItemListView::dragEnterEvent(QGraphicsSceneDragDropEvent* event)
     setAutoScroll(true);
 }
 
-void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
+void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEventevent)
 {
     QGraphicsWidget::dragMoveEvent(event);
 
@@ -951,7 +946,7 @@ void KItemListView::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
     }
 }
 
-void KItemListView::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
+void KItemListView::dragLeaveEvent(QGraphicsSceneDragDropEventevent)
 {
     QGraphicsWidget::dragLeaveEvent(event);
     setAutoScroll(false);
@@ -1273,9 +1268,12 @@ void KItemListView::slotItemsChanged(const KItemRangeList& itemRanges,
             updateVisibleGroupHeaders();
             doLayout(NoAnimation);
         }
+
+        QAccessibleTableModelChangeEvent ev(this, QAccessibleTableModelChangeEvent::DataChanged);
+        ev.setFirstRow(itemRange.index);
+        ev.setLastRow(itemRange.index + itemRange.count);
+        QAccessible::updateAccessibility(&ev);
     }
-#pragma message("TODO: port accessibility otherwise the following line asserts")
-    //QAccessible::updateAccessibility(this, 0, QAccessible::TableModelChanged);
 }
 
 void KItemListView::slotGroupsChanged()
@@ -1338,17 +1336,23 @@ void KItemListView::slotCurrentChanged(int current, int previous)
 {
     Q_UNUSED(previous);
 
-    KItemListWidget* previousWidget = m_visibleItems.value(previous, 0);
-    if (previousWidget) {
-        previousWidget->setCurrent(false);
-    }
+    // In SingleSelection mode (e.g., in the Places Panel), the current item is
+    // always the selected item. It is not necessary to highlight the current item then.
+    if (m_controller->selectionBehavior() != KItemListController::SingleSelection) {
+        KItemListWidget* previousWidget = m_visibleItems.value(previous, 0);
+        if (previousWidget) {
+            previousWidget->setCurrent(false);
+        }
 
-    KItemListWidget* currentWidget = m_visibleItems.value(current, 0);
-    if (currentWidget) {
-        currentWidget->setCurrent(true);
+        KItemListWidget* currentWidget = m_visibleItems.value(current, 0);
+        if (currentWidget) {
+            currentWidget->setCurrent(true);
+        }
     }
-#pragma message("TODO: port accessibility otherwise the following line asserts")
-    //QAccessible::updateAccessibility(this, current+1, QAccessible::Focus);
+
+    QAccessibleEvent ev(this, QAccessible::Focus);
+    ev.setChild(current);
+    QAccessible::updateAccessibility(&ev);
 }
 
 void KItemListView::slotSelectionChanged(const KItemSet& current, const KItemSet& previous)
@@ -1985,7 +1989,12 @@ void KItemListView::updateWidgetProperties(KItemListWidget* widget, int index)
     widget->setStyleOption(m_styleOption);
 
     const KItemListSelectionManager* selectionManager = m_controller->selectionManager();
-    widget->setCurrent(index == selectionManager->currentItem());
+
+    // In SingleSelection mode (e.g., in the Places Panel), the current item is
+    // always the selected item. It is not necessary to highlight the current item then.
+    if (m_controller->selectionBehavior() != KItemListController::SingleSelection) {
+        widget->setCurrent(index == selectionManager->currentItem());
+    }
     widget->setSelected(selectionManager->isSelected(index));
     widget->setHovered(false);
     widget->setEnabledSelectionToggle(enabledSelectionToggles());
@@ -2717,4 +2726,3 @@ void KItemListGroupHeaderCreatorBase::recycle(KItemListGroupHeader* header)
     pushRecycleableWidget(header);
 }
 
-#include "kitemlistview.moc"