┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinview.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-09-24 13:50:31 +0000
committerPeter Penz <[email protected]>2007-09-24 13:50:31 +0000
commit772a55aafc2e558302d042eb65026b9b50302ccc (patch)
tree5101245b249850864d5c82c243c75cd7043de129 /src/dolphinview.cpp
parentf78bac99094a9fe485d7ca8dac93654a807430f0 (diff)
Restore the root URL when navigating through the history (this is important for views like the column view where the root URL might differ from the current URL).
svn path=/trunk/KDE/kdebase/apps/; revision=716310
Diffstat (limited to 'src/dolphinview.cpp')
-rw-r--r--src/dolphinview.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index 0b6c32811..ab413f765 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -71,7 +71,8 @@ DolphinView::DolphinView(QWidget* parent,
m_fileItemDelegate(0),
m_dolphinModel(dolphinModel),
m_dirLister(dirLister),
- m_proxyModel(proxyModel)
+ m_proxyModel(proxyModel),
+ m_rootUrl(url)
{
setFocusPolicy(Qt::StrongFocus);
m_topLayout = new QVBoxLayout(this);
@@ -121,6 +122,11 @@ const KUrl& DolphinView::url() const
return m_controller->url();
}
+void DolphinView::setRootUrl(const KUrl& url)
+{
+ m_rootUrl = url;
+}
+
KUrl DolphinView::rootUrl() const
{
return isColumnViewActive() ? m_dirLister->url() : url();
@@ -414,12 +420,28 @@ void DolphinView::setUrl(const KUrl& url)
return;
}
+ const KUrl oldRootUrl = rootUrl();
m_controller->setUrl(url); // emits urlChanged, which we forward
- applyViewProperties(url);
+ const bool restoreColumnView = !isColumnViewActive()
+ && m_rootUrl.isParentOf(url)
+ && (m_rootUrl != url);
+ if (restoreColumnView) {
+ applyViewProperties(m_rootUrl);
+ startDirLister(m_rootUrl);
+ Q_ASSERT(itemView() == m_columnView);
+ m_columnView->showColumn(url);
+ } else {
+ applyViewProperties(url);
+ startDirLister(url);
+ }
- startDirLister(url);
itemView()->setFocus();
+
+ const KUrl newRootUrl = rootUrl();
+ if (newRootUrl != oldRootUrl) {
+ emit rootUrlChanged(newRootUrl);
+ }
}
void DolphinView::mouseReleaseEvent(QMouseEvent* event)