diff options
| author | Peter Penz <[email protected]> | 2007-09-24 13:50:31 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2007-09-24 13:50:31 +0000 |
| commit | 772a55aafc2e558302d042eb65026b9b50302ccc (patch) | |
| tree | 5101245b249850864d5c82c243c75cd7043de129 /src/dolphinview.cpp | |
| parent | f78bac99094a9fe485d7ca8dac93654a807430f0 (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.cpp | 28 |
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) |
