1. Implement DolphinView::clearSelection().
2. Simplify DolphinView::invertSelection().
I found, fixed, and unit-tested a bug in the selection
manager which was uncovered by this change.
+ endAnchoredSelection();
const QSet<int> previous = selectedItems();
count = qMin(count, m_model->count() - index);
const QSet<int> previous = selectedItems();
count = qMin(count, m_model->count() - index);
NoChange,
InsertItems,
RemoveItems,
NoChange,
InsertItems,
RemoveItems,
+ EndAnchoredSelection,
+ ToggleSelected
<< QSet<int>()
<< EndAnchoredSelection << KItemRangeList()
<< QSet<int>();
<< QSet<int>()
<< EndAnchoredSelection << KItemRangeList()
<< QSet<int>();
+
+ QTest::newRow("Toggle selection")
+ << (QSet<int>() << 1 << 3 << 4)
+ << 6 << 8
+ << (QSet<int>() << 1 << 3 << 4 << 6 << 7 << 8)
+ << ToggleSelected << (KItemRangeList() << KItemRange(0, 10))
+ << (QSet<int>() << 0 << 2 << 5 << 9);
}
void KItemListSelectionManagerTest::testChangeSelection()
}
void KItemListSelectionManagerTest::testChangeSelection()
m_selectionManager->endAnchoredSelection();
QVERIFY(!m_selectionManager->isAnchoredSelectionActive());
break;
m_selectionManager->endAnchoredSelection();
QVERIFY(!m_selectionManager->isAnchoredSelectionActive());
break;
+ case ToggleSelected:
+ foreach(const KItemRange& range, changedItems) {
+ m_selectionManager->setSelected(range.index, range.count, KItemListSelectionManager::Toggle);
+ }
+ break;
void DolphinView::invertSelection()
{
void DolphinView::invertSelection()
{
- KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager();
- const QSet<int> selectedItems = selectionManager->selectedItems();
- QSet<int> invertedSelectedItems;
-
- const int maxIndex = fileItemModel()->count() - 1;
- for (int i = 0; i <= maxIndex; ++i) {
- if (!selectedItems.contains(i)) {
- invertedSelectedItems.insert(i);
- }
- }
-
- selectionManager->setSelectedItems(invertedSelectedItems);
+ KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager();
+ selectionManager->setSelected(0, fileItemModel()->count(), KItemListSelectionManager::Toggle);
}
void DolphinView::clearSelection()
{
}
void DolphinView::clearSelection()
{
- //m_viewAccessor.itemView()->clearSelection();
+ m_container->controller()->selectionManager()->clearSelection();
}
void DolphinView::renameSelectedItems()
}
void DolphinView::renameSelectedItems()