]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.cpp
Merge remote-tracking branch 'origin/KDE/4.9'
[dolphin.git] / src / kitemviews / kitemlistview.cpp
index 681b37b5f9a79d6e26f8ae7bc22462c79b0d3281..6a68ae79899e18c1f3127f992ab8b9276221b3ff 100644 (file)
@@ -23,6 +23,7 @@
 #include "kitemlistview.h"
 
 #include <KDebug>
+#include "kitemlistcontainer.h"
 #include "kitemlistcontroller.h"
 #include "kitemlistheader.h"
 #include "kitemlistselectionmanager.h"
@@ -55,12 +56,16 @@ namespace {
 }
 
 #ifndef QT_NO_ACCESSIBILITY
-QAccessibleInterface* accessibleViewFactory(const QString &key, QObject *object)
+QAccessibleInterface* accessibleInterfaceFactory(const QString &key, QObject *object)
 {
     Q_UNUSED(key)
-    if (KItemListView *view = qobject_cast<KItemListView*>(object)) {
+
+    if (KItemListContainer* container = qobject_cast<KItemListContainer*>(object)) {
+        return new KItemListContainerAccessible(container);
+    } else if (KItemListView* view = qobject_cast<KItemListView*>(object)) {
         return new KItemListViewAccessible(view);
     }
+
     return 0;
 }
 #endif
@@ -125,7 +130,7 @@ KItemListView::KItemListView(QGraphicsWidget* parent) :
     m_header = new KItemListHeader(this);
 
 #ifndef QT_NO_ACCESSIBILITY
-    QAccessible::installFactory(accessibleViewFactory);
+    QAccessible::installFactory(accessibleInterfaceFactory);
 #endif
 
 }
@@ -659,11 +664,6 @@ void KItemListView::paint(QPainter* painter, const QStyleOptionGraphicsItem* opt
     }
 }
 
-KItemListViewLayouter* KItemListView::layouter() const
-{
-    return m_layouter;
-}
-
 void KItemListView::setItemSize(const QSizeF& size)
 {
     const QSizeF previousSize = m_itemSize;
@@ -1212,6 +1212,7 @@ void KItemListView::slotItemsChanged(const KItemRangeList& itemRanges,
             doLayout(NoAnimation);
         }
     }
+    QAccessible::updateAccessibility(this, 0, QAccessible::TableModelChanged);
 }
 
 void KItemListView::slotGroupedSortingChanged(bool current)
@@ -1437,9 +1438,9 @@ void KItemListView::triggerAutoScrolling()
     const qreal newScrollOffset = qMin(scrollOffset() + m_autoScrollIncrement, maxVisibleOffset);
     setScrollOffset(newScrollOffset);
 
-   // Trigger the autoscroll timer which will periodically call
-   // triggerAutoScrolling()
-   m_autoScrollTimer->start(RepeatingAutoScrollDelay);
+    // Trigger the autoscroll timer which will periodically call
+    // triggerAutoScrolling()
+    m_autoScrollTimer->start(RepeatingAutoScrollDelay);
 }
 
 void KItemListView::slotGeometryOfGroupHeaderParentChanged()
@@ -1453,12 +1454,16 @@ void KItemListView::slotGeometryOfGroupHeaderParentChanged()
 
 void KItemListView::slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value)
 {
+    disconnectRoleEditingSignals(index);
+
     emit roleEditingCanceled(index, role, value);
     m_editingRole = false;
 }
 
 void KItemListView::slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value)
 {
+    disconnectRoleEditingSignals(index);
+
     emit roleEditingFinished(index, role, value);
     m_editingRole = false;
 }
@@ -2529,6 +2534,17 @@ bool KItemListView::hasSiblingSuccessor(int index) const
     return hasSuccessor;
 }
 
+void KItemListView::disconnectRoleEditingSignals(int index)
+{
+    KItemListWidget* widget = m_visibleItems.value(index);
+    if (!widget) {
+        return;
+    }
+
+    widget->disconnect(SIGNAL(roleEditingCanceled(int,QByteArray,QVariant)), this);
+    widget->disconnect(SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), this);
+}
+
 int KItemListView::calculateAutoScrollingIncrement(int pos, int range, int oldInc)
 {
     int inc = 0;