X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fc2ab478989fb4effc14c06aa56fdb29d3143b35..16e3d669de256aab86f957cd5b3bee91bd2fbbff:/src/kitemviews/kitemlistselectionmanager.cpp diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index ebff1a30e..46ffe7c13 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -24,7 +24,6 @@ #include "kitemlistselectionmanager.h" #include "kitemmodelbase.h" -#include KItemListSelectionManager::KItemListSelectionManager(QObject* parent) : QObject(parent), @@ -260,7 +259,7 @@ void KItemListSelectionManager::itemsInserted(const KItemRangeList& itemRanges) const KItemSet previous = m_selectedItems; m_selectedItems.clear(); - foreach (int index, previous) { + for (int index: previous) { int inc = 0; foreach (const KItemRange& itemRange, itemRanges) { if (index < itemRange.index) { @@ -309,7 +308,7 @@ void KItemListSelectionManager::itemsRemoved(const KItemRangeList& itemRanges) const KItemSet previous = m_selectedItems; m_selectedItems.clear(); - foreach (int oldIndex, previous) { + for (int oldIndex : previous) { const int index = indexAfterRangesRemoving(oldIndex, itemRanges, DiscardRemovedIndex); if (index >= 0) { m_selectedItems.insert(index); @@ -331,6 +330,11 @@ void KItemListSelectionManager::itemsMoved(const KItemRange& itemRange, const QL // Store the current selection (needed in the selectionChanged() signal) const KItemSet previousSelection = selectedItems(); + // endAnchoredSelection() adds all items between m_currentItem and + // m_anchorItem to m_selectedItems. They can then be moved + // individually later in this function. + endAnchoredSelection(); + // Update the current item if (m_currentItem >= itemRange.index && m_currentItem < itemRange.index + itemRange.count) { const int previousCurrentItem = m_currentItem; @@ -342,17 +346,15 @@ void KItemListSelectionManager::itemsMoved(const KItemRange& itemRange, const QL emit currentChanged(newCurrentItem, previousCurrentItem); } - // Update the anchor item - if (m_anchorItem >= itemRange.index && m_anchorItem < itemRange.index + itemRange.count) { - m_anchorItem = movedToIndexes.at(m_anchorItem - itemRange.index); - } + // Start a new anchored selection. + beginAnchoredSelection(m_currentItem); // Update the selections if (!m_selectedItems.isEmpty()) { const KItemSet previous = m_selectedItems; m_selectedItems.clear(); - foreach (int index, previous) { + for (int index : previous) { if (index >= itemRange.index && index < itemRange.index + itemRange.count) { m_selectedItems.insert(movedToIndexes.at(index - itemRange.index)); } @@ -393,4 +395,4 @@ int KItemListSelectionManager::indexAfterRangesRemoving(int index, const KItemRa } return qBound(-1, index - dec, m_model->count() - 1); } -#include "kitemlistselectionmanager.moc" +