mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
Merge branch 'KDE/4.13' of git://anongit.kde.org/kde-baseapps into KDE/4.13
This commit is contained in:
commit
5f29eec075
|
@ -331,6 +331,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,10 +347,8 @@ 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()) {
|
||||
|
|
|
@ -78,6 +78,7 @@ private slots:
|
|||
void testChangeSelection();
|
||||
void testDeleteCurrentItem_data();
|
||||
void testDeleteCurrentItem();
|
||||
void testAnchoredSelectionAfterMovingItems();
|
||||
|
||||
private:
|
||||
void verifySelectionChange(QSignalSpy& spy, const KItemSet& currentSelection, const KItemSet& previousSelection) const;
|
||||
|
@ -413,6 +414,15 @@ void KItemListSelectionManagerTest::testChangeSelection_data()
|
|||
<< QVariant::fromValue(QList<int>() << 4 << 5 << 2 << 3))
|
||||
<< (KItemSet() << 0 << 1 << 4 << 5);
|
||||
|
||||
QTest::newRow("Move items with active anchored selection")
|
||||
<< KItemSet()
|
||||
<< 0 << 3
|
||||
<< (KItemSet() << 0 << 1 << 2 << 3)
|
||||
<< MoveItems
|
||||
<< (QList<QVariant>() << QVariant::fromValue(KItemRange(2, 4))
|
||||
<< QVariant::fromValue(QList<int>() << 4 << 5 << 2 << 3))
|
||||
<< (KItemSet() << 0 << 1 << 4 << 5);
|
||||
|
||||
// Revert sort order
|
||||
QTest::newRow("Revert sort order")
|
||||
<< (KItemSet() << 0 << 1)
|
||||
|
@ -519,6 +529,22 @@ void KItemListSelectionManagerTest::testDeleteCurrentItem()
|
|||
QCOMPARE(m_selectionManager->currentItem(), newCurrentItemIndex);
|
||||
}
|
||||
|
||||
void KItemListSelectionManagerTest::testAnchoredSelectionAfterMovingItems()
|
||||
{
|
||||
m_selectionManager->setCurrentItem(4);
|
||||
m_selectionManager->beginAnchoredSelection(4);
|
||||
|
||||
// Reverse the items between 0 and 5.
|
||||
m_selectionManager->itemsMoved(KItemRange(0, 6), QList<int>() << 5 << 4 << 3 << 2 << 1 << 0);
|
||||
|
||||
QCOMPARE(m_selectionManager->currentItem(), 1);
|
||||
QCOMPARE(m_selectionManager->m_anchorItem, 1);
|
||||
|
||||
// Make 2 the current item -> 1 and 2 should be selected.
|
||||
m_selectionManager->setCurrentItem(2);
|
||||
QCOMPARE(m_selectionManager->selectedItems(), KItemSet() << 1 << 2);
|
||||
}
|
||||
|
||||
void KItemListSelectionManagerTest::verifySelectionChange(QSignalSpy& spy,
|
||||
const KItemSet& currentSelection,
|
||||
const KItemSet& previousSelection) const
|
||||
|
|
Loading…
Reference in a new issue