┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kitemlistselectionmanager.cpp20
-rw-r--r--src/kitemviews/kitemlistselectionmanager.h1
-rw-r--r--src/kitemviews/kitemlistview.cpp9
3 files changed, 22 insertions, 8 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);
diff --git a/src/kitemviews/kitemlistselectionmanager.h b/src/kitemviews/kitemlistselectionmanager.h
index a8ef5ca2d..82ae13abb 100644
--- a/src/kitemviews/kitemlistselectionmanager.h
+++ b/src/kitemviews/kitemlistselectionmanager.h
@@ -54,6 +54,7 @@ public:
void setSelectedItems(const QSet<int>& items);
QSet<int> selectedItems() const;
+ bool isSelected(int index) const;
bool hasSelection() const;
void setSelected(int index, int count = 1, SelectionMode mode = Select);
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index d96cf14ce..ad4221394 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -1393,16 +1393,9 @@ void KItemListView::updateWidgetProperties(KItemListWidget* widget, int index)
const KItemListSelectionManager* selectionManager = m_controller->selectionManager();
widget->setCurrent(index == selectionManager->currentItem());
-
- if (selectionManager->hasSelection()) {
- const QSet<int> selectedItems = selectionManager->selectedItems();
- widget->setSelected(selectedItems.contains(index));
- } else {
- widget->setSelected(false);
- }
+ widget->setSelected(selectionManager->isSelected(index));
widget->setHovered(false);
-
widget->setIndex(index);
widget->setData(m_model->data(index));
}