X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/b67c098347268f87a911c8a9bf2f9b13a2d13caf..4eec2a77cfa8719f0cf7f6741c8cfa11b23ebf5b:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 030a6abae..1aa7e0ff8 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -52,7 +53,7 @@ #include "dolphincontextmenu.h" #include "filterbar.h" #include "renamedialog.h" -#include "urlnavigator.h" +#include "kurlnavigator.h" #include "viewproperties.h" #include "dolphinsettings.h" #include "dolphin_generalsettings.h" @@ -96,7 +97,7 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, connect(clipboard, SIGNAL(dataChanged()), this, SLOT(updateCutItems())); - m_urlNavigator = new UrlNavigator(DolphinSettings::instance().bookmarkManager(), url, this); + m_urlNavigator = new KUrlNavigator(new KFilePlacesModel(this), url, this); m_urlNavigator->setUrlEditable(DolphinSettings::instance().generalSettings()->editableUrl()); m_urlNavigator->setHomeUrl(DolphinSettings::instance().generalSettings()->homeUrl()); m_urlNavigator->setShowHiddenFiles(showHiddenFiles); @@ -295,8 +296,8 @@ void DolphinView::renameSelectedItems() name.replace(replaceIndex, 1, number); if (oldUrl.fileName() != name) { - KUrl newUrl(oldUrl.upUrl()); - newUrl.addPath(name); + KUrl newUrl = oldUrl; + newUrl.setFileName(name); m_mainWindow->rename(oldUrl, newUrl); } ++it; @@ -323,8 +324,8 @@ void DolphinView::renameSelectedItems() } else { const KUrl& oldUrl = urls.first(); - KUrl newUrl = oldUrl.upUrl(); - newUrl.addPath(newName); + KUrl newUrl = oldUrl; + newUrl.setFileName(newName); m_mainWindow->rename(oldUrl, newUrl); } } @@ -355,11 +356,6 @@ int DolphinView::contentsY() const return itemView()->verticalScrollBar()->value(); } -void DolphinView::refreshSettings() -{ - startDirLister(m_urlNavigator->url()); -} - void DolphinView::emitRequestItemInfo(const KUrl& url) { emit requestItemInfo(url); @@ -841,17 +837,42 @@ void DolphinView::startDirLister(const KUrl& url, bool reload) m_blockContentsMovedSignal = true; m_dirLister->stop(); - bool keepOldDirs = isColumnViewActive() && !reload; + bool openDir = true; + bool keepOldDirs = isColumnViewActive(); if (keepOldDirs) { - 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. + if (reload) { keepOldDirs = false; + + const KUrl& dirListerUrl = m_dirLister->url(); + if (dirListerUrl.isValid()) { + const KUrl::List dirs = m_dirLister->directories(); + KUrl url; + foreach (url, dirs) { + m_dirLister->updateDirectory(url); + } + openDir = false; + } } + else 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