┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWeng Xuetian <[email protected]>2012-08-27 13:55:17 -0400
committerWeng Xuetian <[email protected]>2012-08-27 13:58:46 -0400
commit864495f661256c1b5c2c6642081708a0937f8480 (patch)
tree59d54302ee7bf3a73ffd484d30a019a88182a456 /src
parent89960b65e9041bb22f896c8d5be2e44de4369040 (diff)
Make --select can automatically scroll to the selected file.
REVIEW: 106209
Diffstat (limited to 'src')
-rw-r--r--src/dolphinpart.cpp5
-rw-r--r--src/views/dolphinview.cpp30
-rw-r--r--src/views/dolphinview.h14
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