mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-19 16:31:21 +00:00
When the view is reloaded in Dolphin or the DolphinPart inside
Konqueror, restore the selection, the current item, the scroll position, and the expanded folders in the Details View. BUG: 169893 BUG: 187732 svn path=/trunk/KDE/kdebase/apps/; revision=1056438
This commit is contained in:
parent
bd47f7f978
commit
56a81a196f
|
@ -438,8 +438,16 @@ KFileItemDelegate::InformationList DolphinView::additionalInfo() const
|
|||
|
||||
void DolphinView::reload()
|
||||
{
|
||||
QByteArray viewState;
|
||||
QDataStream saveStream(&viewState, QIODevice::WriteOnly);
|
||||
saveState(saveStream);
|
||||
m_selectedItems = selectedItems();
|
||||
|
||||
setUrl(url());
|
||||
loadDirectory(url(), true);
|
||||
|
||||
QDataStream restoreStream(viewState);
|
||||
restoreState(restoreStream);
|
||||
}
|
||||
|
||||
void DolphinView::refresh()
|
||||
|
@ -593,11 +601,7 @@ void DolphinView::invertSelection()
|
|||
|
||||
void DolphinView::clearSelection()
|
||||
{
|
||||
QItemSelectionModel* selModel = m_viewAccessor.itemView()->selectionModel();
|
||||
const QModelIndex currentIndex = selModel->currentIndex();
|
||||
selModel->setCurrentIndex(currentIndex, QItemSelectionModel::Current |
|
||||
QItemSelectionModel::Clear);
|
||||
m_selectedItems.clear();
|
||||
m_viewAccessor.itemView()->clearSelection();
|
||||
}
|
||||
|
||||
void DolphinView::changeSelection(const KFileItemList& selection)
|
||||
|
@ -1143,12 +1147,6 @@ void DolphinView::selectAndScrollToCreatedItem()
|
|||
m_createdItemUrl = KUrl();
|
||||
}
|
||||
|
||||
void DolphinView::restoreSelection()
|
||||
{
|
||||
disconnect(m_viewAccessor.dirLister(), SIGNAL(completed()), this, SLOT(restoreSelection()));
|
||||
changeSelection(m_selectedItems);
|
||||
}
|
||||
|
||||
void DolphinView::emitContentsMoved()
|
||||
{
|
||||
// TODO: If DolphinViewContainer uses DolphinView::saveState(...) to save the
|
||||
|
@ -1234,6 +1232,11 @@ void DolphinView::slotLoadingCompleted()
|
|||
}
|
||||
}
|
||||
|
||||
if (!m_selectedItems.isEmpty()) {
|
||||
changeSelection(m_selectedItems);
|
||||
m_selectedItems.clear();
|
||||
}
|
||||
|
||||
// Restore the contents position. This has to be done using a Qt::QueuedConnection
|
||||
// because the view might not be in its final state yet.
|
||||
QMetaObject::invokeMethod(this, "restoreContentsPosition", Qt::QueuedConnection);
|
||||
|
@ -1262,11 +1265,6 @@ void DolphinView::loadDirectory(const KUrl& url, bool reload)
|
|||
m_loadingDirectory = true;
|
||||
m_expanderActive = false;
|
||||
|
||||
if (reload) {
|
||||
m_selectedItems = selectedItems();
|
||||
connect(m_viewAccessor.dirLister(), SIGNAL(completed()), this, SLOT(restoreSelection()));
|
||||
}
|
||||
|
||||
m_viewAccessor.dirLister()->openUrl(url, reload ? KDirLister::Reload : KDirLister::NoFlags);
|
||||
}
|
||||
|
||||
|
|
|
@ -714,11 +714,6 @@ private slots:
|
|||
*/
|
||||
void selectAndScrollToCreatedItem();
|
||||
|
||||
/**
|
||||
* Restore selection after view refresh.
|
||||
*/
|
||||
void restoreSelection();
|
||||
|
||||
/**
|
||||
* Called when a redirection happens.
|
||||
* Testcase: fish://localhost
|
||||
|
|
Loading…
Reference in a new issue