From c94e1e1cd6753b2d8f4ebb942b744be1a62c887d Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Mon, 3 Oct 2011 16:12:18 +0200 Subject: Keep current item and selection when resorting, part 2 This commit adds the missing pieces to KItemListView and makes KFileItemModel::resortAllItems() only emit the itemsMoved() signal. --- src/kitemviews/kitemlistview.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/kitemviews/kitemlistview.cpp') diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 612b6fd65..4818527ba 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -771,8 +771,19 @@ void KItemListView::slotItemsMoved(const KItemRange& itemRange, const QList // TODO: // * Implement KItemListView::slotItemsMoved() (which should call KItemListSelectionManager::itemsMoved()) // * Do not emit itemsRemoved()/itemsInserted() in KFileItemModel::resortAllItems() - Q_UNUSED(itemRange); - Q_UNUSED(movedToIndexes); + const int firstVisibleMovedIndex = qMax(firstVisibleIndex(), itemRange.index); + const int lastVisibleMovedIndex = qMin(lastVisibleIndex(), itemRange.index + itemRange.count - 1); + + for (int index = firstVisibleMovedIndex; index <= lastVisibleMovedIndex; ++index) { + KItemListWidget* widget = m_visibleItems.value(index); + if (widget) { + updateWidgetProperties(widget, index); + } + } + + if (m_controller) { + m_controller->selectionManager()->itemsMoved(itemRange, movedToIndexes); + } } void KItemListView::slotItemsChanged(const KItemRangeList& itemRanges, -- cgit v1.3