]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemmodel.cpp
Merge remote-tracking branch 'origin/KDE/4.10'
[dolphin.git] / src / kitemviews / kfileitemmodel.cpp
index 688826ee416b2e7c41361002c3e1efdb23a9e094..61703e760f5f1f01618ceb27a1023b5fb1d1125c 100644 (file)
@@ -437,6 +437,30 @@ bool KFileItemModel::setExpanded(int index, bool expanded)
             itemsToRemove.append(m_itemData.at(index)->item);
             ++index;
         }
+
+        QSet<KUrl> urlsToRemove;
+        urlsToRemove.reserve(itemsToRemove.count() + 1);
+        urlsToRemove.insert(url);
+        foreach (const KFileItem& item, itemsToRemove) {
+            KUrl url = item.url();
+            url.adjustPath(KUrl::RemoveTrailingSlash);
+            urlsToRemove.insert(url);
+        }
+
+        QHash<KFileItem, ItemData*>::iterator it = m_filteredItems.begin();
+        while (it != m_filteredItems.end()) {
+            const KUrl url = it.key().url();
+            KUrl parentUrl = url.upUrl();
+            parentUrl.adjustPath(KUrl::RemoveTrailingSlash);
+
+            if (urlsToRemove.contains(parentUrl)) {
+                delete it.value();
+                it = m_filteredItems.erase(it);
+            } else {
+                ++it;
+            }
+        }
+
         removeItems(itemsToRemove, DeleteItemData);
     }