]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Forward port of SVN commit 1093803: Assure that the changed selection model is reconn...
authorPeter Penz <peter.penz19@gmail.com>
Sun, 21 Feb 2010 13:29:32 +0000 (13:29 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 21 Feb 2010 13:29:32 +0000 (13:29 +0000)
CCBUG: 226749

svn path=/trunk/KDE/kdebase/apps/; revision=1093807

src/dolphinview.cpp

index 3911b92bd21f811b2a6b900d462ac7ab52e8ec94..c00d6a7e7eb8efd25bcb12c6b3d1a810c3534d94 100644 (file)
@@ -535,22 +535,30 @@ QList<QAction*> DolphinView::versionControlActions(const KFileItemList& items) c
 
 void DolphinView::setUrl(const KUrl& url)
 {
-    if (m_controller->url() == url) {
-        return;
-    }
+    if (m_controller->url() != url) {
+        m_newFileNames.clear();
 
-    m_newFileNames.clear();
+        m_controller->setUrl(url); // emits urlChanged, which we forward
+        m_viewAccessor.prepareUrlChange(url);
+        applyViewProperties();
+        loadDirectory(url);
 
-    m_controller->setUrl(url); // emits urlChanged, which we forward
-    m_viewAccessor.prepareUrlChange(url);
-    applyViewProperties();
-    loadDirectory(url);
+        // When changing the URL there is no need to keep the version
+        // data of the previous URL.
+        m_viewAccessor.dirModel()->clearVersionData();
 
-    // When changing the URL there is no need to keep the version
-    // data of the previous URL.
-    m_viewAccessor.dirModel()->clearVersionData();
+        emit startedPathLoading(url);
+    }
 
-    emit startedPathLoading(url);
+    // the selection model might have changed in the case of a column view
+    QItemSelectionModel* selectionModel = m_viewAccessor.itemView()->selectionModel();
+    if (m_selectionModel != selectionModel) {
+        disconnect(m_selectionModel, SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+                   this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection)));
+        m_selectionModel = selectionModel;
+        connect(m_selectionModel, SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+                this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection)));
+    }
 }
 
 void DolphinView::selectAll()
@@ -1325,8 +1333,8 @@ void DolphinView::createView()
         m_selectionModel = view->selectionModel();
     }
     m_selectionModel->setParent(this);
-    connect(view->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
-            this, SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
+    connect(m_selectionModel, SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+            this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection)));
 
     setFocusProxy(m_viewAccessor.layoutTarget());
     m_topLayout->insertWidget(1, m_viewAccessor.layoutTarget());