From kde-commits Mon Nov 30 08:15:23 2009 From: Frank Reininghaus Date: Mon, 30 Nov 2009 08:15:23 +0000 To: kde-commits Subject: KDE/kdebase/apps/dolphin/src Message-Id: <1259568923.359659.14881.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=125956892911800 SVN commit 1056438 by freininghaus: 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 M +14 -16 dolphinview.cpp M +0 -5 dolphinview.h --- trunk/KDE/kdebase/apps/dolphin/src/dolphinview.cpp #1056437:1056438 @@ -438,8 +438,16 @@ 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::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 @@ 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 @@ } } + 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 @@ 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); } --- trunk/KDE/kdebase/apps/dolphin/src/dolphinview.h #1056437:1056438 @@ -715,11 +715,6 @@ void selectAndScrollToCreatedItem(); /** - * Restore selection after view refresh. - */ - void restoreSelection(); - - /** * Called when a redirection happens. * Testcase: fish://localhost */