┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodel.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2013-09-29 15:45:02 +0200
committerFrank Reininghaus <[email protected]>2013-09-29 15:45:14 +0200
commit08710b05c7c4c5930523ad3e3b4550687c167d4a (patch)
treec30abc3c74ec2515cd9ac44f1df051de4022049c /src/kitemviews/kfileitemmodel.cpp
parent71a2be8d4ccb278aca5a2a7fa4483be72e293e5f (diff)
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
Diffstat (limited to 'src/kitemviews/kfileitemmodel.cpp')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp13
1 files changed, 13 insertions, 0 deletions
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<KFileItem, ItemData*>::iterator it = m_filteredItems.begin();
+ const QHash<KFileItem, ItemData*>::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<QByteArray>& changedRoles)