diff options
| author | Frank Reininghaus <[email protected]> | 2011-10-03 16:42:02 +0200 |
|---|---|---|
| committer | Frank Reininghaus <[email protected]> | 2011-10-03 16:42:02 +0200 |
| commit | aeb16937ced1bf426c2ca21dcc270f9e4a96645c (patch) | |
| tree | b3f4072528ced2bdfbc0b1ee38ab2518dbdd6fdc /src/kitemviews/kitemlistselectionmanager.cpp | |
| parent | 96d39ad6a9796e9058b993e37af39f0d26ce5caf (diff) | |
Add function KItemListSelectionManager::isSelected(int index)
This function is used in KItemListView::updateWidgetProperties()
to find out if an item is selected in a more efficient way.
The new function is tested in KItemListSelectionManagerTest.
I've factored out some code from
KItemListSelectionManagerTest::testChangeSelection() to a new
member to simplify the test.
Diffstat (limited to 'src/kitemviews/kitemlistselectionmanager.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistselectionmanager.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp index 131ee46e6..fb279796f 100644 --- a/src/kitemviews/kitemlistselectionmanager.cpp +++ b/src/kitemviews/kitemlistselectionmanager.cpp @@ -95,6 +95,26 @@ QSet<int> KItemListSelectionManager::selectedItems() const return selectedItems; } +bool KItemListSelectionManager::isSelected(int index) const +{ + if (m_selectedItems.contains(index)) { + return true; + } + + if (m_isAnchoredSelectionActive && m_anchorItem != m_currentItem) { + Q_ASSERT(m_anchorItem >= 0); + Q_ASSERT(m_currentItem >= 0); + const int from = qMin(m_anchorItem, m_currentItem); + const int to = qMax(m_anchorItem, m_currentItem); + + if (from <= index && index <= to) { + return true; + } + } + + return false; +} + bool KItemListSelectionManager::hasSelection() const { return !m_selectedItems.isEmpty() || (m_isAnchoredSelectionActive && m_anchorItem != m_currentItem); |
