diff options
| author | Peter Penz <[email protected]> | 2010-11-26 17:54:49 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2010-11-26 17:54:49 +0000 |
| commit | c227e8afe9a8209110ae38c794668ba158c43080 (patch) | |
| tree | e80eaa431214b7418d7dd07e2b225b82d933f169 /src/views/dolphinview.cpp | |
| parent | d63a5c26e20fe62eeeb2202ad9703470f2e096e7 (diff) | |
Also reconnect signals for the directory lister when changing the view or the URL, as the directory lister might change in the case of the column view (based on a patch from Frank Reininghaus)
svn path=/trunk/KDE/kdebase/apps/; revision=1201082
Diffstat (limited to 'src/views/dolphinview.cpp')
| -rw-r--r-- | src/views/dolphinview.cpp | 61 |
1 files changed, 38 insertions, 23 deletions
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index e6207c90c..c2e998e5a 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -125,14 +125,6 @@ DolphinView::DolphinView(QWidget* parent, connect(m_dolphinViewController, SIGNAL(urlChangeRequested(KUrl)), m_viewModeController, SLOT(setUrl(KUrl))); - KDirLister* dirLister = m_viewAccessor.dirLister(); - connect(dirLister, SIGNAL(redirection(KUrl,KUrl)), - this, SLOT(slotRedirection(KUrl,KUrl))); - connect(dirLister, SIGNAL(completed()), - this, SLOT(slotDirListerCompleted())); - connect(dirLister, SIGNAL(refreshItems(const QList<QPair<KFileItem,KFileItem>>&)), - this, SLOT(slotRefreshItems())); - // When a new item has been created by the "Create New..." menu, the item should // get selected and it must be assured that the item will get visible. As the // creation is done asynchronously, several signals must be checked: @@ -526,12 +518,10 @@ void DolphinView::setUrl(const KUrl& url) return; } - // The selection model might change in the case of the column view. Disconnect - // from the current selection model and reconnect later after the URL switch. const bool hadSelection = hasSelection(); - QAbstractItemView* view = m_viewAccessor.itemView(); - disconnect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), - this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection))); + + // The selection model and directory lister might change in the case of the column view: + disconnectViewAccessor(); m_newFileNames.clear(); @@ -546,10 +536,9 @@ void DolphinView::setUrl(const KUrl& url) emit startedPathLoading(url); - // Reconnect to the (probably) new selection model - view = m_viewAccessor.itemView(); - connect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), - this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection))); + // Reconnect to the (probably) new selection model and directory lister + connectViewAccessor(); + if (hadSelection || hasSelection()) { emitSelectionChangedSignal(); } @@ -1184,8 +1173,7 @@ void DolphinView::createView() const int zoomLevel = ZoomLevelInfo::zoomLevelForIconSize(view->iconSize()); m_viewModeController->setZoomLevel(zoomLevel); - connect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), - this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection))); + connectViewAccessor(); setFocusProxy(m_viewAccessor.layoutTarget()); m_topLayout->insertWidget(1, m_viewAccessor.layoutTarget()); @@ -1198,10 +1186,7 @@ void DolphinView::deleteView() m_dolphinViewController->setItemView(0); if (view != 0) { - if (view->selectionModel() != 0) { - disconnect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), - this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection))); - } + disconnectViewAccessor(); // It's important to set the keyboard focus to the parent // before deleting the view: Otherwise when having a split @@ -1288,6 +1273,36 @@ QItemSelection DolphinView::childrenMatchingPattern(const QModelIndex& parent, c return matchingIndexes; } +void DolphinView::connectViewAccessor() +{ + KDirLister* dirLister = m_viewAccessor.dirLister(); + connect(dirLister, SIGNAL(redirection(KUrl,KUrl)), + this, SLOT(slotRedirection(KUrl,KUrl))); + connect(dirLister, SIGNAL(completed()), + this, SLOT(slotDirListerCompleted())); + connect(dirLister, SIGNAL(refreshItems(const QList<QPair<KFileItem,KFileItem>>&)), + this, SLOT(slotRefreshItems())); + + QAbstractItemView* view = m_viewAccessor.itemView(); + connect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), + this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection))); +} + +void DolphinView::disconnectViewAccessor() +{ + KDirLister* dirLister = m_viewAccessor.dirLister(); + disconnect(dirLister, SIGNAL(redirection(KUrl,KUrl)), + this, SLOT(slotRedirection(KUrl,KUrl))); + disconnect(dirLister, SIGNAL(completed()), + this, SLOT(slotDirListerCompleted())); + disconnect(dirLister, SIGNAL(refreshItems(const QList<QPair<KFileItem,KFileItem>>&)), + this, SLOT(slotRefreshItems())); + + QAbstractItemView* view = m_viewAccessor.itemView(); + disconnect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), + this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection))); +} + DolphinView::ViewAccessor::ViewAccessor(DolphinSortFilterProxyModel* proxyModel) : m_rootUrl(), m_iconsView(0), |
