From 08710b05c7c4c5930523ad3e3b4550687c167d4a Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Sun, 29 Sep 2013 15:45:02 +0200 Subject: Make sure that removeExpandedItems() also removes filtered items This fixes the problem that filtered child items in Details View may reappear when switching the view mode and the clearing the filter. BUG: 325344 REVIEW: 112962 FIXED-IN: 4.11.3 --- src/kitemviews/kfileitemmodel.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/kitemviews/kfileitemmodel.cpp') diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index b6b6ee0e2..7b7c39ad7 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -1197,6 +1197,19 @@ void KFileItemModel::removeExpandedItems() removeItems(expandedItems, DeleteItemData); m_expandedDirs.clear(); + + // Also remove all filtered items which have a parent. + QHash::iterator it = m_filteredItems.begin(); + const QHash::iterator end = m_filteredItems.end(); + + while (it != end) { + if (it.value()->parent) { + delete it.value(); + it = m_filteredItems.erase(it); + } else { + ++it; + } + } } void KFileItemModel::emitItemsChangedAndTriggerResorting(const KItemRangeList& itemRanges, const QSet& changedRoles) -- cgit v1.3