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;
}
else {
const KUrl& oldUrl = urls.first();
- KUrl newUrl = oldUrl.upUrl();
- newUrl.addPath(newName);
+ KUrl newUrl = oldUrl;
+ newUrl.setFileName(newName);
m_mainWindow->rename(oldUrl, newUrl);
}
}
return itemView()->verticalScrollBar()->value();
}
-void DolphinView::refreshSettings()
-{
- startDirLister(m_urlNavigator->url());
-}
-
void DolphinView::emitRequestItemInfo(const KUrl& url)
{
emit requestItemInfo(url);
m_blockContentsMovedSignal = true;
m_dirLister->stop();
+ bool openDir = true;
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;
+ if (keepOldDirs) {
+ 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