]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.cpp
Prevent endless scrolling of list when dragging items
[dolphin.git] / src / kitemviews / kitemlistview.cpp
index 3d8224adb6bfd99d9c753f03b661f3036515297f..d7777b541380ed3c0c04df22b9fb15df4496e739 100644 (file)
@@ -299,7 +299,6 @@ void KItemListView::setAutoScroll(bool enabled)
         delete m_autoScrollTimer;
         m_autoScrollTimer = 0;
     }
-
 }
 
 bool KItemListView::autoScroll() const
@@ -524,6 +523,15 @@ QHash<QByteArray, QSizeF> KItemListView::visibleRolesSizes(const KItemRangeList&
     return QHash<QByteArray, QSizeF>();
 }
 
+void KItemListView::setSupportsItemExpanding(bool supportsExpanding)
+{
+    if (m_supportsItemExpanding != supportsExpanding) {
+        m_supportsItemExpanding = supportsExpanding;
+        updateSiblingsInformation();
+        onSupportsItemExpandingChanged(supportsExpanding);
+    }
+}
+
 bool KItemListView::supportsItemExpanding() const
 {
     return m_supportsItemExpanding;
@@ -619,6 +627,8 @@ void KItemListView::setHeaderShown(bool show)
 
         connect(m_header, SIGNAL(visibleRoleWidthChanged(QByteArray,qreal,qreal)),
                 this, SLOT(slotVisibleRoleWidthChanged(QByteArray,qreal,qreal)));
+        connect(m_header, SIGNAL(visibleRoleMoved(QByteArray,int,int)),
+                this, SLOT(slotVisibleRoleMoved(QByteArray,int,int)));
         connect(m_header, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)),
                 this, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)));
         connect(m_header, SIGNAL(sortRoleChanged(QByteArray,QByteArray)),
@@ -723,6 +733,11 @@ void KItemListView::onStyleOptionChanged(const KItemListStyleOption& current, co
     Q_UNUSED(previous);
 }
 
+void KItemListView::onSupportsItemExpandingChanged(bool supportsExpanding)
+{
+    Q_UNUSED(supportsExpanding);
+}
+
 void KItemListView::onTransactionBegin()
 {
 }
@@ -790,14 +805,6 @@ QList<KItemListWidget*> KItemListView::visibleItemListWidgets() const
     return m_visibleItems.values();
 }
 
-void KItemListView::setSupportsItemExpanding(bool supportsExpanding)
-{
-    if (m_supportsItemExpanding != supportsExpanding) {
-        m_supportsItemExpanding = supportsExpanding;
-        updateSiblingsInformation();
-    }
-}
-
 void KItemListView::slotItemsInserted(const KItemRangeList& itemRanges)
 {
     updateVisibleRolesSizes(itemRanges);
@@ -1237,6 +1244,23 @@ void KItemListView::slotVisibleRoleWidthChanged(const QByteArray& role,
     }
 }
 
+void KItemListView::slotVisibleRoleMoved(const QByteArray& role,
+                                         int currentIndex,
+                                         int previousIndex)
+{
+    Q_ASSERT(m_visibleRoles[previousIndex] == role);
+
+    const QList<QByteArray> previous = m_visibleRoles;
+
+    QList<QByteArray> current = m_visibleRoles;
+    current.removeAt(previousIndex);
+    current.insert(currentIndex, role);
+
+    setVisibleRoles(current);
+
+    emit visibleRolesChanged(current, previous);
+}
+
 void KItemListView::triggerAutoScrolling()
 {
     if (!m_autoScrollTimer) {