diff options
| author | Weng Xuetian <[email protected]> | 2012-08-27 13:55:17 -0400 |
|---|---|---|
| committer | Weng Xuetian <[email protected]> | 2012-08-27 13:58:46 -0400 |
| commit | 864495f661256c1b5c2c6642081708a0937f8480 (patch) | |
| tree | 59d54302ee7bf3a73ffd484d30a019a88182a456 /src | |
| parent | 89960b65e9041bb22f896c8d5be2e44de4369040 (diff) | |
Make --select can automatically scroll to the selected file.
REVIEW: 106209
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphinpart.cpp | 5 | ||||
| -rw-r--r-- | src/views/dolphinview.cpp | 30 | ||||
| -rw-r--r-- | src/views/dolphinview.h | 14 |
3 files changed, 18 insertions, 31 deletions
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 233c7007a..80504154f 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<KUrl>& urls) void DolphinView::markUrlAsCurrent(const KUrl& url) { m_currentItemUrl = url; + m_scrollToCurrentItem = true; } void DolphinView::selectItems(const QRegExp& pattern, bool enabled) @@ -1150,25 +1151,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<KUrl>() << url); } void DolphinView::slotDirectoryRedirection(const KUrl& oldUrl, const KUrl& newUrl) @@ -1186,6 +1170,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<KUrl>& 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,18 +640,10 @@ 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<KUrl> m_selectedUrls; // Used for making the view to remember selections after F5 |
