[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/apps/dolphin/src
From: Frank Reininghaus <frank78ac () googlemail ! com>
Date: 2009-11-30 8:15:23
Message-ID: 1259568923.359659.14881.nullmailer () svn ! kde ! org
[Download RAW message or body]
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
*/
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic