X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c8072005fada01d772595ec64adca449134f421e..7bd8a826f40b3973d127d32f8f00a625c08d1c1d:/src/treeviewsidebarpage.cpp diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp index eac1e6cf4..8096b966a 100644 --- a/src/treeviewsidebarpage.cpp +++ b/src/treeviewsidebarpage.cpp @@ -38,6 +38,7 @@ TreeViewSidebarPage::TreeViewSidebarPage(QWidget* parent) : SidebarPage(parent), + m_dirListerCompleted(false), m_dirLister(0), m_dolphinModel(0), m_proxyModel(0), @@ -89,6 +90,12 @@ void TreeViewSidebarPage::showEvent(QShowEvent* event) m_dirLister->setDelayedMimeTypes(true); m_dirLister->setAutoErrorHandlingEnabled(false, this); + m_dirListerCompleted = true; + connect(m_dirLister, SIGNAL(started(const KUrl&)), + this, SLOT(slotDirListerStarted(const KUrl&))); + connect(m_dirLister, SIGNAL(completed()), + this, SLOT(slotDirListerCompleted())); + Q_ASSERT(m_dolphinModel == 0); m_dolphinModel = new DolphinModel(this); m_dolphinModel->setDirLister(m_dirLister); @@ -237,10 +244,23 @@ void TreeViewSidebarPage::loadSubTree() // Load all sub directories that need to get expanded for making // the leaf directory visible. The slot triggerExpanding() will // get invoked if the expanding has been finished. + Q_ASSERT(m_dirListerCompleted); m_dolphinModel->expandToUrl(m_leafDir); } } +void TreeViewSidebarPage::slotDirListerStarted(const KUrl& url) +{ + Q_UNUSED(url); + m_dirListerCompleted = false; +} + +void TreeViewSidebarPage::slotDirListerCompleted() +{ + m_dirListerCompleted = true; +} + + void TreeViewSidebarPage::loadTree(const KUrl& url) { Q_ASSERT(m_dirLister != 0); @@ -257,7 +277,7 @@ void TreeViewSidebarPage::loadTree(const KUrl& url) connect(m_dirLister, SIGNAL(completed()), this, SLOT(loadSubTree())); - if (m_dirLister->url() != baseUrl) { + if ((m_dirLister->url() != baseUrl) || !m_dirListerCompleted) { m_dirLister->stop(); m_dirLister->openUrl(baseUrl); } else {