diff options
| author | Frank Reininghaus <[email protected]> | 2013-09-29 15:45:02 +0200 |
|---|---|---|
| committer | Frank Reininghaus <[email protected]> | 2013-09-29 15:45:14 +0200 |
| commit | 08710b05c7c4c5930523ad3e3b4550687c167d4a (patch) | |
| tree | c30abc3c74ec2515cd9ac44f1df051de4022049c /src/kitemviews/kfileitemmodel.cpp | |
| parent | 71a2be8d4ccb278aca5a2a7fa4483be72e293e5f (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.cpp | 13 |
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) |
