Commit 282ecb38 authored by Xuetian Weng's avatar Xuetian Weng

Make --select can automatically scroll to the selected file.

REVIEW: 106209
parent ba9f98d6
......@@ -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));
}
////
......
......@@ -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)
......@@ -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<KUrl>() << 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);
}
......
......@@ -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,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<KUrl> m_selectedUrls; // Used for making the view to remember selections after F5
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment