diff options
| author | Emmanuel Pescosta <[email protected]> | 2013-06-26 22:04:52 +0200 |
|---|---|---|
| committer | Emmanuel Pescosta <[email protected]> | 2013-06-26 22:04:52 +0200 |
| commit | 391d36edf78d07caa4116b6af0687d1f192bc82d (patch) | |
| tree | 69d47bb49f4c1ddbe626acaf069dda38dc518611 /src/kitemviews/kfileitemmodel.cpp | |
| parent | 1634501b0ed91f19999cf4f880bf2d7585469b11 (diff) | |
Re-enable expandable folders for network top level folders (remote:/)
Added a hash table for target url to url mapping. So when the dir lister
sends us the target url as directory url, we can use the url mapping table
to get the right "Dolphin internal" directory url, which is the non-target url.
BUG: 306219
FIXED-IN: 4.11.0
REVIEW: 111252
Diffstat (limited to 'src/kitemviews/kfileitemmodel.cpp')
| -rw-r--r-- | src/kitemviews/kfileitemmodel.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index 698314c2f..3f19a2011 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -124,8 +124,10 @@ void KFileItemModel::loadDirectory(const KUrl& url) void KFileItemModel::refreshDirectory(const KUrl& url) { // Refresh all expanded directories first (Bug 295300) - foreach (const KUrl& expandedUrl, m_expandedDirs) { - m_dirLister->openUrl(expandedUrl, KDirLister::Reload); + QHashIterator<KUrl, KUrl> expandedDirs(m_expandedDirs); + while (expandedDirs.hasNext()) { + expandedDirs.next(); + m_dirLister->openUrl(expandedDirs.value(), KDirLister::Reload); } m_dirLister->openUrl(url, KDirLister::Reload); @@ -432,11 +434,12 @@ bool KFileItemModel::setExpanded(int index, bool expanded) const KFileItem item = m_itemData.at(index)->item; const KUrl url = item.url(); + const KUrl targetUrl = item.targetUrl(); if (expanded) { - m_expandedDirs.insert(url); + m_expandedDirs.insert(targetUrl, url); m_dirLister->openUrl(url, KDirLister::Keep); } else { - m_expandedDirs.remove(url); + m_expandedDirs.remove(targetUrl); m_dirLister->stop(url); removeFilteredChildren(KFileItemList() << item); @@ -478,7 +481,7 @@ int KFileItemModel::expandedParentsCount(int index) const QSet<KUrl> KFileItemModel::expandedDirectories() const { - return m_expandedDirs; + return m_expandedDirs.values().toSet(); } void KFileItemModel::restoreExpandedDirectories(const QSet<KUrl>& urls) @@ -755,8 +758,13 @@ void KFileItemModel::slotItemsAdded(const KUrl& directoryUrl, const KFileItemLis { Q_ASSERT(!items.isEmpty()); - KUrl parentUrl = directoryUrl; - parentUrl.adjustPath(KUrl::RemoveTrailingSlash); + KUrl parentUrl; + if (m_expandedDirs.contains(directoryUrl)) { + parentUrl = m_expandedDirs.value(directoryUrl); + } else { + parentUrl = directoryUrl; + parentUrl.adjustPath(KUrl::RemoveTrailingSlash); + } if (m_requestRole[ExpandedParentsCountRole]) { KFileItem item = items.first(); @@ -1337,7 +1345,7 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item, } if (m_requestRole[IsExpandableRole]) { - data.insert(sharedValue("isExpandable"), item.isDir() && item.url() == item.targetUrl()); + data.insert(sharedValue("isExpandable"), item.isDir()); } if (m_requestRole[ExpandedParentsCountRole]) { |
