diff options
| author | Frank Reininghaus <[email protected]> | 2013-12-22 12:50:09 +0100 |
|---|---|---|
| committer | Frank Reininghaus <[email protected]> | 2013-12-22 12:50:14 +0100 |
| commit | d5d1ae124a8d6e96656010179a624e1ce31a04b0 (patch) | |
| tree | 165dda72124dab3fe40f28bae6ded8d0414237a5 /src/kitemviews/kfileitemmodel.cpp | |
| parent | 8210d5e472a2bff9f1a1f16b0740df25822b5362 (diff) | |
Update filtered items when the "refreshItems" signal is received
This fixes the problem that the new file name is not shown in the view
if an item is renamed while it is filtered.
BUG: 329118
FIXED-IN: 4.12.1
REVIEW: 114459
Diffstat (limited to 'src/kitemviews/kfileitemmodel.cpp')
| -rw-r--r-- | src/kitemviews/kfileitemmodel.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index 739384bf9..87006718a 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -967,6 +967,20 @@ void KFileItemModel::slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >& m_items.remove(oldItem.url()); m_items.insert(newItem.url(), index); indexes.append(index); + } else { + // Check if 'oldItem' is one of the filtered items. + QHash<KFileItem, ItemData*>::iterator it = m_filteredItems.find(oldItem); + if (it != m_filteredItems.end()) { + ItemData* itemData = it.value(); + itemData->item = newItem; + + // The data stored in 'values' might have changed. Therefore, we clear + // 'values' and re-populate it the next time it is requested via data(int). + itemData->values.clear(); + + m_filteredItems.erase(it); + m_filteredItems.insert(newItem, itemData); + } } } |
