Update the controller's url upon redirection, otherwise pasting would paste into the old url. #186947

svn path=/trunk/KDE/kdebase/apps/; revision=1025406
This commit is contained in:
David Faure 2009-09-18 17:14:03 +00:00
parent 1b160aee92
commit 4bccabca1b
4 changed files with 28 additions and 5 deletions

View file

@ -52,6 +52,11 @@ void DolphinController::setUrl(const KUrl& url)
} }
} }
void DolphinController::redirectToUrl(const KUrl& url)
{
m_url = url;
}
void DolphinController::setItemView(QAbstractItemView* view) void DolphinController::setItemView(QAbstractItemView* view)
{ {
if (m_itemView != 0) { if (m_itemView != 0) {

View file

@ -97,6 +97,12 @@ public:
void setUrl(const KUrl& url); void setUrl(const KUrl& url);
const KUrl& url() const; 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 * Changes the current item view where the controller is working. This
* is only necessary for views like the tree view, where internally * is only necessary for views like the tree view, where internally
@ -165,7 +171,7 @@ public:
void indicateSortOrderChange(Qt::SortOrder order); 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 * (with folders first) and mixed sorting of files and folders done inside
* the view implementation. This method should be invoked by the view * the view implementation. This method should be invoked by the view
* implementation (e. g. the details view uses this method in combination * implementation (e. g. the details view uses this method in combination

View file

@ -134,8 +134,8 @@ DolphinView::DolphinView(QWidget* parent,
this, SLOT(clearHoverInformation())); this, SLOT(clearHoverInformation()));
KDirLister* dirLister = m_viewAccessor.dirLister(); KDirLister* dirLister = m_viewAccessor.dirLister();
connect(dirLister, SIGNAL(redirection(KUrl, KUrl)), connect(dirLister, SIGNAL(redirection(KUrl,KUrl)),
this, SIGNAL(redirection(KUrl, KUrl))); this, SLOT(slotRedirection(KUrl,KUrl)));
connect(dirLister, SIGNAL(completed()), connect(dirLister, SIGNAL(completed()),
this, SLOT(slotDirListerCompleted())); this, SLOT(slotDirListerCompleted()));
connect(dirLister, SIGNAL(refreshItems(const QList<QPair<KFileItem,KFileItem>>&)), connect(dirLister, SIGNAL(refreshItems(const QList<QPair<KFileItem,KFileItem>>&)),
@ -246,7 +246,7 @@ void DolphinView::setMode(Mode mode)
emit modeChanged(); emit modeChanged();
updateZoomLevel(oldZoomLevel); updateZoomLevel(oldZoomLevel);
if (m_showPreview) { if (m_showPreview) {
loadDirectory(viewPropsUrl); loadDirectory(viewPropsUrl);
} }
} }
@ -625,7 +625,7 @@ void DolphinView::renameSelectedItems()
return; return;
} }
delete dialog; delete dialog;
// the selection would be invalid after renaming the items, so just clear // the selection would be invalid after renaming the items, so just clear
// it before // it before
clearSelection(); clearSelection();
@ -1500,4 +1500,10 @@ KDirLister* DolphinView::ViewAccessor::dirLister() const
return dirModel()->dirLister(); return dirModel()->dirLister();
} }
void DolphinView::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl)
{
emit redirection(oldUrl, newUrl);
m_controller->redirectToUrl(newUrl); // #186947
}
#include "dolphinview.moc" #include "dolphinview.moc"

View file

@ -694,6 +694,12 @@ private slots:
*/ */
void restoreSelection(); void restoreSelection();
/**
* Called when a redirection happens.
* Testcase: fish://localhost
*/
void slotRedirection(const KUrl& oldUrl, const KUrl& newUrl);
private: private:
void loadDirectory(const KUrl& url, bool reload = false); void loadDirectory(const KUrl& url, bool reload = false);