X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/623c19e042cd19c147bc27f50b62c22b4986e6b6..f8a61efc8d03532d5b22cae0bdc65afc90303509:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 88a2cff80..8a102c94f 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -781,12 +781,13 @@ void DolphinView::showPreview(const KFileItem* item, const QPixmap& pixmap) void DolphinView::restoreContentsPos() { - UrlNavigator::HistoryElem historyItem = m_urlNavigator->currentHistoryItem(); - if (!historyItem.url().isEmpty()) { + KUrl currentUrl = m_urlNavigator->url(); + if (!currentUrl.isEmpty()) { QAbstractItemView* view = itemView(); - // TODO: view->setCurrentItem(historyItem.currentFileName()); - view->horizontalScrollBar()->setValue(historyItem.contentsX()); - view->verticalScrollBar()->setValue(historyItem.contentsY()); + // TODO: view->setCurrentItem(m_urlNavigator->currentFileName()); + QPoint pos = m_urlNavigator->savedPosition(); + view->horizontalScrollBar()->setValue(pos.x()); + view->verticalScrollBar()->setValue(pos.y()); } } @@ -840,14 +841,29 @@ void DolphinView::startDirLister(const KUrl& url, bool reload) m_blockContentsMovedSignal = true; m_dirLister->stop(); - bool keepOldDirs = isColumnViewActive(); - if (keepOldDirs && !m_dirLister->url().isParentOf(url)) { - // The current URL is not a child of the dir lister - // URL. This may happen when e. g. a bookmark has been selected - // and hence the view must be reset. - keepOldDirs = false; + bool openDir = true; + bool keepOldDirs = isColumnViewActive() && !reload; + if (keepOldDirs) { + if (m_dirLister->directories().contains(url)) { + // The dir lister contains the directory already, so + // KDirLister::openUrl() may not been invoked twice. + m_dirLister->updateDirectory(url); + openDir = false; + } + else { + const KUrl& dirListerUrl = m_dirLister->url(); + if ((dirListerUrl == url) || !m_dirLister->url().isParentOf(url)) { + // The current URL is not a child of the dir lister + // URL. This may happen when e. g. a bookmark has been selected + // and hence the view must be reset. + keepOldDirs = false; + } + } + } + + if (openDir) { + m_dirLister->openUrl(url, keepOldDirs, reload); } - m_dirLister->openUrl(url, keepOldDirs, reload); } QString DolphinView::defaultStatusBarText() const