diff options
| author | Frank Reininghaus <[email protected]> | 2011-08-14 11:05:19 +0200 |
|---|---|---|
| committer | Frank Reininghaus <[email protected]> | 2011-08-14 11:05:19 +0200 |
| commit | 7b911df33ec83bb978985d50342ce1c27afb6425 (patch) | |
| tree | 54f39f397d436d491ac4a79eafefb34d7ea3824c | |
| parent | 98e859b0c31b0071a5bda673035e0ba39e7169bb (diff) | |
Two small selection improvements in DolphinView
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.
| -rw-r--r-- | src/kitemviews/kitemlistselectionmanager.cpp | 1 | ||||
| -rw-r--r-- | src/tests/kitemlistselectionmanagertest.cpp | 15 | ||||
| -rw-r--r-- | src/views/dolphinview.cpp | 16 |
3 files changed, 18 insertions, 14 deletions
diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index a03e8172c..9aaf22f58 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -104,6 +104,7 @@ void KItemListSelectionManager::setSelected(int index, int count, SelectionMode return; } + endAnchoredSelection(); const QSet<int> previous = selectedItems(); count = qMin(count, m_model->count() - index); diff --git a/src/tests/kitemlistselectionmanagertest.cpp b/src/tests/kitemlistselectionmanagertest.cpp index 7f79332a3..5a3ffd55c 100644 --- a/src/tests/kitemlistselectionmanagertest.cpp +++ b/src/tests/kitemlistselectionmanagertest.cpp @@ -315,7 +315,8 @@ namespace { NoChange, InsertItems, RemoveItems, - EndAnchoredSelection + EndAnchoredSelection, + ToggleSelected }; } @@ -360,6 +361,13 @@ void KItemListSelectionManagerTest::testChangeSelection_data() << 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() @@ -423,6 +431,11 @@ void KItemListSelectionManagerTest::testChangeSelection() 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; case NoChange: break; } diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index f429529de..de54b9bb6 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -529,23 +529,13 @@ void DolphinView::selectAll() 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() { - //m_viewAccessor.itemView()->clearSelection(); + m_container->controller()->selectionManager()->clearSelection(); } void DolphinView::renameSelectedItems() |
