┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kitemlistselectionmanager.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2011-12-04 18:16:39 +0100
committerPeter Penz <[email protected]>2011-12-04 18:21:46 +0100
commit854b0acd1a259fab40e42c8470bb144c955dcc5a (patch)
tree376e1aa31a85dd410ba1d4236cb0b3c26c83763a /src/kitemviews/kitemlistselectionmanager.cpp
parent031b1a4c19945456a389ddb00630aadf95b0c09a (diff)
Fix crash #1 when filtering items
When filtering items it was possible that the current index got an invalid value which resulted in accessing the URL of a null-KFileItem. There is still one (general) open issue in KFileItemModelRolesUpdater (crash #2) where a KFileItem that is already null gets read. It is not really related to filtering but can be triggered quite easy when filtering huge directories with enabled previews. CCBUG: 287642
Diffstat (limited to 'src/kitemviews/kitemlistselectionmanager.cpp')
-rw-r--r--src/kitemviews/kitemlistselectionmanager.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp
index fb279796f..448e79293 100644
--- a/src/kitemviews/kitemlistselectionmanager.cpp
+++ b/src/kitemviews/kitemlistselectionmanager.cpp
@@ -293,15 +293,19 @@ void KItemListSelectionManager::itemsRemoved(const KItemRangeList& itemRanges)
if (currentItem < itemRange.index) {
break;
}
+
if (currentItem >= itemRange.index + itemRange.count) {
currentItem -= itemRange.count;
- } else if (currentItem >= m_model->count()) {
+ }
+
+ if (currentItem >= m_model->count()) {
currentItem = m_model->count() - 1;
}
}
// Calling setCurrentItem would trigger the selectionChanged signal, but we want to
// emit it only once in this function -> change the current item manually and emit currentChanged
m_currentItem = currentItem;
+ Q_ASSERT(m_currentItem < m_model->count());
emit currentChanged(m_currentItem, previousCurrent);
}