diff options
| -rw-r--r-- | src/dolphinview.cpp | 38 | ||||
| -rw-r--r-- | src/dolphinview.h | 13 | ||||
| -rw-r--r-- | src/dolphinviewcontainer.cpp | 13 | ||||
| -rw-r--r-- | src/dolphinviewcontainer.h | 3 |
4 files changed, 33 insertions, 34 deletions
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index f0a4487c9..ae6ea5ec7 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -84,7 +84,9 @@ DolphinView::DolphinView(QWidget* parent, m_dirLister(dirLister), m_proxyModel(proxyModel), m_iconManager(0), - m_toolTipManager(0) + m_toolTipManager(0), + m_rootUrl(), + m_currentItemUrl() { m_topLayout = new QVBoxLayout(this); m_topLayout->setSpacing(0); @@ -123,6 +125,9 @@ DolphinView::DolphinView(QWidget* parent, connect(m_controller, SIGNAL(viewportEntered()), this, SLOT(clearHoverInformation())); + connect(m_dirLister, SIGNAL(completed()), + this, SLOT(restoreCurrentItem())); + applyViewProperties(url); m_topLayout->addWidget(itemView()); } @@ -347,20 +352,6 @@ 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(); @@ -493,6 +484,8 @@ void DolphinView::calculateItemCount(int& fileCount, int& folderCount) void DolphinView::setUrl(const KUrl& url) { + // remember current item candidate (see restoreCurrentItem()) + m_currentItemUrl = url; updateView(url, KUrl()); } @@ -969,6 +962,21 @@ void DolphinView::slotDeleteFileFinished(KJob* job) } } + +void DolphinView::restoreCurrentItem() +{ + const QModelIndex dirIndex = m_dolphinModel->indexForUrl(m_currentItemUrl); + 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::loadDirectory(const KUrl& url, bool reload) { if (!url.isValid()) { diff --git a/src/dolphinview.h b/src/dolphinview.h index 708535567..121a7f6da 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -233,12 +233,6 @@ 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(); @@ -601,6 +595,12 @@ private slots: */ void slotDeleteFileFinished(KJob* job); + /** + * Restores the current item (= item that has the keyboard focus) + * to m_currentItemUrl. + */ + void restoreCurrentItem(); + private: void loadDirectory(const KUrl& url, bool reload = false); @@ -683,6 +683,7 @@ private: ToolTipManager* m_toolTipManager; KUrl m_rootUrl; + KUrl m_currentItemUrl; }; /// Allow using DolphinView::Mode in QVariant diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 6bc620ee2..7179c5080 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -68,9 +68,7 @@ DolphinViewContainer::DolphinViewContainer(DolphinMainWindow* mainWindow, m_filterBar(0), m_statusBar(0), m_dirLister(0), - m_proxyModel(0), - m_previousUrl(), - m_currentUrl() + m_proxyModel(0) { hide(); @@ -171,16 +169,12 @@ DolphinViewContainer::~DolphinViewContainer() void DolphinViewContainer::setUrl(const KUrl& newUrl) { - if (newUrl != m_currentUrl) { - m_previousUrl = m_currentUrl; - m_currentUrl = newUrl; - m_urlNavigator->setUrl(newUrl); - } + m_urlNavigator->setUrl(newUrl); } const KUrl& DolphinViewContainer::url() const { - return m_currentUrl; + return m_urlNavigator->url(); } void DolphinViewContainer::setActive(bool active) @@ -234,7 +228,6 @@ 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 a0ddcb711..b4f799cb1 100644 --- a/src/dolphinviewcontainer.h +++ b/src/dolphinviewcontainer.h @@ -230,9 +230,6 @@ private: DolphinModel* m_dolphinModel; DolphinDirLister* m_dirLister; DolphinSortFilterProxyModel* m_proxyModel; - - KUrl m_previousUrl; - KUrl m_currentUrl; }; inline const DolphinStatusBar* DolphinViewContainer::statusBar() const |
