diff --git a/src/dolphincontroller.cpp b/src/dolphincontroller.cpp index bf26df6267..89d6509ca4 100644 --- a/src/dolphincontroller.cpp +++ b/src/dolphincontroller.cpp @@ -52,6 +52,11 @@ void DolphinController::setUrl(const KUrl& url) } } +void DolphinController::redirectToUrl(const KUrl& url) +{ + m_url = url; +} + void DolphinController::setItemView(QAbstractItemView* view) { if (m_itemView != 0) { diff --git a/src/dolphincontroller.h b/src/dolphincontroller.h index bd2189e217..8aebdcac47 100644 --- a/src/dolphincontroller.h +++ b/src/dolphincontroller.h @@ -97,6 +97,12 @@ public: void setUrl(const KUrl& url); const KUrl& url() const; + /** + * Sets the URL to \a url and does nothing else. Called when + * a redirection happens. + */ + void redirectToUrl(const KUrl& url); + /** * Changes the current item view where the controller is working. This * is only necessary for views like the tree view, where internally @@ -165,7 +171,7 @@ public: void indicateSortOrderChange(Qt::SortOrder order); /** - * Informs the abstract Dolphin view about a change between separate sorting + * Informs the abstract Dolphin view about a change between separate sorting * (with folders first) and mixed sorting of files and folders done inside * the view implementation. This method should be invoked by the view * implementation (e. g. the details view uses this method in combination diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 5682581682..5ae81f31da 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -134,8 +134,8 @@ DolphinView::DolphinView(QWidget* parent, this, SLOT(clearHoverInformation())); KDirLister* dirLister = m_viewAccessor.dirLister(); - connect(dirLister, SIGNAL(redirection(KUrl, KUrl)), - this, SIGNAL(redirection(KUrl, KUrl))); + connect(dirLister, SIGNAL(redirection(KUrl,KUrl)), + this, SLOT(slotRedirection(KUrl,KUrl))); connect(dirLister, SIGNAL(completed()), this, SLOT(slotDirListerCompleted())); connect(dirLister, SIGNAL(refreshItems(const QList>&)), @@ -246,7 +246,7 @@ void DolphinView::setMode(Mode mode) emit modeChanged(); updateZoomLevel(oldZoomLevel); - if (m_showPreview) { + if (m_showPreview) { loadDirectory(viewPropsUrl); } } @@ -625,7 +625,7 @@ void DolphinView::renameSelectedItems() return; } delete dialog; - + // the selection would be invalid after renaming the items, so just clear // it before clearSelection(); @@ -1500,4 +1500,10 @@ KDirLister* DolphinView::ViewAccessor::dirLister() const return dirModel()->dirLister(); } +void DolphinView::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl) +{ + emit redirection(oldUrl, newUrl); + m_controller->redirectToUrl(newUrl); // #186947 +} + #include "dolphinview.moc" diff --git a/src/dolphinview.h b/src/dolphinview.h index 57bf5d2f92..b0d78482a2 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -694,6 +694,12 @@ private slots: */ void restoreSelection(); + /** + * Called when a redirection happens. + * Testcase: fish://localhost + */ + void slotRedirection(const KUrl& oldUrl, const KUrl& newUrl); + private: void loadDirectory(const KUrl& url, bool reload = false);