when going back in history apply the keyboard focus to the the previously shown directory

BUG: 156550
BUG: 158590

svn path=/trunk/KDE/kdebase/apps/; revision=810493
This commit is contained in:
Peter Penz 2008-05-20 21:21:48 +00:00
parent 0ce69374d9
commit ed5b2e5473
4 changed files with 34 additions and 5 deletions

View file

@ -347,6 +347,20 @@ QPoint DolphinView::contentsPosition() const
return QPoint(x, y);
}
void DolphinView::setCurrentItem(const KUrl& url)
{
const QModelIndex dirIndex = m_dolphinModel->indexForUrl(url);
if (dirIndex.isValid()) {
const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
QAbstractItemView* view = itemView();
const bool clearSelection = !hasSelection();
view->setCurrentIndex(proxyIndex);
if (clearSelection) {
view->clearSelection();
}
}
}
void DolphinView::zoomIn()
{
m_controller->triggerZoomIn();

View file

@ -233,6 +233,12 @@ public:
/** Returns the upper left position of the view content. */
QPoint contentsPosition() const;
/**
* Sets the current item (= item that has the keyboard focus) to
* the item with the URL \a url.
*/
void setCurrentItem(const KUrl& url);
/** Increases the size of the current set view mode. */
void zoomIn();

View file

@ -68,7 +68,9 @@ DolphinViewContainer::DolphinViewContainer(DolphinMainWindow* mainWindow,
m_filterBar(0),
m_statusBar(0),
m_dirLister(0),
m_proxyModel(0)
m_proxyModel(0),
m_previousUrl(),
m_currentUrl()
{
hide();
@ -167,14 +169,18 @@ DolphinViewContainer::~DolphinViewContainer()
m_dirLister = 0; // deleted by m_dolphinModel
}
void DolphinViewContainer::setUrl(const KUrl& url)
void DolphinViewContainer::setUrl(const KUrl& newUrl)
{
m_urlNavigator->setUrl(url);
if (newUrl != m_currentUrl) {
m_previousUrl = m_currentUrl;
m_currentUrl = newUrl;
m_urlNavigator->setUrl(newUrl);
}
}
const KUrl& DolphinViewContainer::url() const
{
return m_urlNavigator->url();
return m_currentUrl;
}
void DolphinViewContainer::setActive(bool active)
@ -228,7 +234,7 @@ void DolphinViewContainer::slotDirListerCompleted()
}
updateStatusBar();
m_view->setCurrentItem(m_previousUrl);
QTimer::singleShot(100, this, SLOT(restoreContentsPos()));
}

View file

@ -230,6 +230,9 @@ private:
DolphinModel* m_dolphinModel;
DolphinDirLister* m_dirLister;
DolphinSortFilterProxyModel* m_proxyModel;
KUrl m_previousUrl;
KUrl m_currentUrl;
};
inline const DolphinStatusBar* DolphinViewContainer::statusBar() const