From: Weng Xuetian Date: Mon, 27 Aug 2012 17:55:17 +0000 (-0400) Subject: Make --select can automatically scroll to the selected file. X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/09ba6bcb62297c45c0a5ea664aca1ecb52ba0149 Make --select can automatically scroll to the selected file. REVIEW: 106209 --- diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index d1626e55d..fff7dc0e0 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -554,7 +554,12 @@ void DolphinPart::createDirectory() void DolphinPart::setFilesToSelect(const KUrl::List& files) { + if (files.isEmpty()) { + return; + } + m_view->markUrlsAsSelected(files); + m_view->markUrlAsCurrent(files.at(0)); } //// diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 7cfb3fc41..f2b0a5c8c 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -98,8 +98,8 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : m_toolTipManager(0), m_selectionChangedTimer(0), m_currentItemUrl(), + m_scrollToCurrentItem(false), m_restoredContentsPosition(), - m_createdItemUrl(), m_selectedUrls(), m_versionControlObserver(0) { @@ -363,6 +363,7 @@ void DolphinView::markUrlsAsSelected(const QList& urls) void DolphinView::markUrlAsCurrent(const KUrl& url) { m_currentItemUrl = url; + m_scrollToCurrentItem = true; } void DolphinView::selectItems(const QRegExp& pattern, bool enabled) @@ -1142,25 +1143,8 @@ QString DolphinView::viewPropertiesContext() const void DolphinView::observeCreatedItem(const KUrl& url) { - m_createdItemUrl = url; - connect(m_model, SIGNAL(directoryLoadingCompleted()), - this, SLOT(selectAndScrollToCreatedItem())); -} - -void DolphinView::selectAndScrollToCreatedItem() -{ - KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager(); - const int index = m_model->index(m_createdItemUrl); - if (index != -1) { - selectionManager->setCurrentItem(index); - selectionManager->clearSelection(); - selectionManager->setSelected(index); - m_view->scrollToItem(index); - } - - disconnect(m_model, SIGNAL(directoryLoadingCompleted()), - this, SLOT(selectAndScrollToCreatedItem())); - m_createdItemUrl = KUrl(); + markUrlAsCurrent(url); + markUrlsAsSelected(QList() << url); } void DolphinView::slotDirectoryRedirection(const KUrl& oldUrl, const KUrl& newUrl) @@ -1178,6 +1162,12 @@ void DolphinView::updateViewState() const int currentIndex = m_model->index(m_currentItemUrl); if (currentIndex != -1) { selectionManager->setCurrentItem(currentIndex); + + // scroll to current item and reset the state + if (m_scrollToCurrentItem) { + m_view->scrollToItem(currentIndex); + m_scrollToCurrentItem = false; + } } else { selectionManager->setCurrentItem(0); } diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 1ad4d6c82..10f63c57a 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -181,8 +181,8 @@ public: void markUrlsAsSelected(const QList& urls); /** - * Marks the item indicated by \p url as the current item after the - * directory DolphinView::url() has been loaded. + * Marks the item indicated by \p url to be scrolled to and as the + * current item after directory DolphinView::url() has been loaded. */ void markUrlAsCurrent(const KUrl& url); @@ -640,17 +640,9 @@ private slots: * Observes the item with the URL \a url. As soon as the directory * model indicates that the item is available, the item will * get selected and it is assured that the item stays visible. - * - * @see selectAndScrollToCreatedItem() */ void observeCreatedItem(const KUrl& url); - /** - * Selects and scrolls to the item that got observed - * by observeCreatedItem(). - */ - void selectAndScrollToCreatedItem(); - /** * Called when a redirection happens. * Testcase: fish://localhost @@ -754,8 +746,8 @@ private: QTimer* m_selectionChangedTimer; KUrl m_currentItemUrl; // Used for making the view to remember the current URL after F5 + bool m_scrollToCurrentItem; // Used for marking we need to scroll to current item or not QPoint m_restoredContentsPosition; - KUrl m_createdItemUrl; // URL for a new item that got created by the "Create New..." menu QList m_selectedUrls; // Used for making the view to remember selections after F5