┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dolphinview.cpp14
-rw-r--r--src/dolphinview.h6
-rw-r--r--src/dolphinviewcontainer.cpp16
-rw-r--r--src/dolphinviewcontainer.h3
4 files changed, 34 insertions, 5 deletions
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index 2618dea27..f0a4487c9 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -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();
diff --git a/src/dolphinview.h b/src/dolphinview.h
index 5d88e4f54..708535567 100644
--- a/src/dolphinview.h
+++ b/src/dolphinview.h
@@ -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();
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp
index ae9defc1a..6bc620ee2 100644
--- a/src/dolphinviewcontainer.cpp
+++ b/src/dolphinviewcontainer.cpp
@@ -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()));
}
diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h
index b4f799cb1..a0ddcb711 100644
--- a/src/dolphinviewcontainer.h
+++ b/src/dolphinviewcontainer.h
@@ -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