]> cloud.milkyroute.net Git - dolphin.git/commitdiff
prevent loading items twice in the tree view
authorPeter Penz <peter.penz19@gmail.com>
Tue, 8 May 2007 21:52:09 +0000 (21:52 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Tue, 8 May 2007 21:52:09 +0000 (21:52 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=662690

src/treeviewsidebarpage.cpp

index 4c97f38334852622b58b53f07377f2a2750738dd..8c1c153d61a8fbb80cee925db0c3d0ecfe3cd4ff 100644 (file)
@@ -22,6 +22,7 @@
 #include "dolphinmainwindow.h"
 #include "dolphinsortfilterproxymodel.h"
 #include "dolphinview.h"
+#include "dolphinsettings.h"
 #include "sidebartreeview.h"
 #include "treeviewcontextmenu.h"
 
@@ -34,7 +35,6 @@
 #include <QItemSelectionModel>
 #include <QTreeView>
 #include <QVBoxLayout>
-#include "dolphinsettings.h"
 
 TreeViewSidebarPage::TreeViewSidebarPage(QWidget* parent) :
     SidebarPage(parent),
@@ -202,10 +202,19 @@ void TreeViewSidebarPage::loadTree(const KUrl& url)
         connect(m_dirLister, SIGNAL(completed()),
                 this, SLOT(expandSelectionParent()));
 
+        // Implementation note: It is important to remove the trailing slash from
+        // the parent URL, as the directories from the dir lister (KDirLister::directories())
+        // don't have a trailing slash and hence KUrl::List::contains() would fail...
         KUrl parentUrl = url.upUrl();
+        parentUrl.adjustPath(KUrl::RemoveTrailingSlash);
         while (!parentUrl.isParentOf(baseUrl)) {
-            m_dirLister->openUrl(parentUrl, true, false);
+            if (m_dirLister->directories().contains(parentUrl)) {
+                m_dirLister->updateDirectory(parentUrl);
+            } else {
+                m_dirLister->openUrl(parentUrl, true, false);
+            }
             parentUrl = parentUrl.upUrl();
+            parentUrl.adjustPath(KUrl::RemoveTrailingSlash);
         }
     }
 }