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());
}
}
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