┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2011-08-14 11:05:19 +0200
committerFrank Reininghaus <[email protected]>2011-08-14 11:05:19 +0200
commit7b911df33ec83bb978985d50342ce1c27afb6425 (patch)
tree54f39f397d436d491ac4a79eafefb34d7ea3824c /src
parent98e859b0c31b0071a5bda673035e0ba39e7169bb (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.
Diffstat (limited to 'src')
-rw-r--r--src/kitemviews/kitemlistselectionmanager.cpp1
-rw-r--r--src/tests/kitemlistselectionmanagertest.cpp15
-rw-r--r--src/views/dolphinview.cpp16
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()