]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
Correct value for autostart setting of Service-nepomukfileindexer, part2
[dolphin.git] / src / views / dolphinview.cpp
index e2ccc7ff1477cf6bcc6810beb4f6c8947e555470..ea64a04dc1c0e55d2ee04964625eac5a2c05dc15 100644 (file)
@@ -101,6 +101,7 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
     m_scrollToCurrentItem(false),
     m_restoredContentsPosition(),
     m_selectedUrls(),
+    m_clearSelectionBeforeSelectingNewItems(false),
     m_versionControlObserver(0)
 {
     m_topLayout = new QVBoxLayout(this);
@@ -599,6 +600,8 @@ void DolphinView::setUrl(const KUrl& url)
         return;
     }
 
+    clearSelection();
+
     emit urlAboutToBeChanged(url);
     m_url = url;
 
@@ -629,6 +632,7 @@ void DolphinView::invertSelection()
 
 void DolphinView::clearSelection()
 {
+    m_selectedUrls.clear();
     m_container->controller()->selectionManager()->clearSelection();
 }
 
@@ -847,7 +851,7 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos)
     nepomukRunning = (Nepomuk2::ResourceManager::instance()->initialized());
     if (nepomukRunning) {
         KConfig config("nepomukserverrc");
-        indexingEnabled = config.group("Service-nepomukfileindexer").readEntry("autostart", false);
+        indexingEnabled = config.group("Service-nepomukfileindexer").readEntry("autostart", true);
     }
 #endif
 
@@ -1179,8 +1183,11 @@ QString DolphinView::viewPropertiesContext() const
 
 void DolphinView::observeCreatedItem(const KUrl& url)
 {
-    markUrlAsCurrent(url);
-    markUrlsAsSelected(QList<KUrl>() << url);
+    if (m_active) {
+        clearSelection();
+        markUrlAsCurrent(url);
+        markUrlsAsSelected(QList<KUrl>() << url);
+    }
 }
 
 void DolphinView::slotDirectoryRedirection(const KUrl& oldUrl, const KUrl& newUrl)
@@ -1220,20 +1227,27 @@ void DolphinView::updateViewState()
     }
 
     if (!m_selectedUrls.isEmpty()) {
-        clearSelection();
-
         KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager();
+
+        if (m_clearSelectionBeforeSelectingNewItems) {
+            selectionManager->clearSelection();
+            m_clearSelectionBeforeSelectingNewItems = false;
+        }
+
         QSet<int> selectedItems = selectionManager->selectedItems();
 
-        foreach (const KUrl& url, m_selectedUrls) {
-            const int index = m_model->index(url);
+        QList<KUrl>::iterator it = m_selectedUrls.begin();
+        while (it != m_selectedUrls.end()) {
+            const int index = m_model->index(*it);
             if (index >= 0) {
                 selectedItems.insert(index);
+                it = m_selectedUrls.erase(it);
+            } else {
+                 ++it;
             }
         }
 
         selectionManager->setSelectedItems(selectedItems);
-        m_selectedUrls.clear();
     }
 }
 
@@ -1540,6 +1554,7 @@ void DolphinView::markPastedUrlsAsSelected(const QMimeData* mimeData)
         destUrls << destination;
     }
     markUrlsAsSelected(destUrls);
+    m_clearSelectionBeforeSelectingNewItems = true;
 }
 
 void DolphinView::updateWritableState()