X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/59e8f22cd5de7cc1811550d8bac6aacc5c36587c..73af993dbf58880b3453b0fc94a02e1c6fc48d1e:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index e677613ba..f0fad1976 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -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); @@ -342,10 +343,12 @@ int DolphinView::itemsCount() const KFileItemList DolphinView::selectedItems() const { const KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager(); - const QSet selectedIndexes = selectionManager->selectedItems(); + QList selectedIndexes = selectionManager->selectedItems().toList(); + + qSort(selectedIndexes); KFileItemList selectedItems; - QSetIterator it(selectedIndexes); + QListIterator it(selectedIndexes); while (it.hasNext()) { const int index = it.next(); selectedItems.append(m_model->fileItem(index)); @@ -791,29 +794,34 @@ void DolphinView::slotItemsActivated(const QSet& indexes) { Q_ASSERT(indexes.count() >= 2); - KFileItemList items; - - QSetIterator it(indexes); - while (it.hasNext()) { - const int index = it.next(); - items.append(m_model->fileItem(index)); - } - - if (items.count() > 5) { - QString question = QString("Are you sure you want to open %1 items?").arg(items.count()); + if (indexes.count() > 5) { + QString question = i18np("Are you sure you want to open 1 item?", "Are you sure you want to open %1 items?", indexes.count()); const int answer = KMessageBox::warningYesNo(this, question); if (answer != KMessageBox::Yes) { return; } } - foreach (const KFileItem& item, items) { - if (item.isDir()) { + KFileItemList items; + items.reserve(indexes.count()); + + QSetIterator it(indexes); + while (it.hasNext()) { + const int index = it.next(); + KFileItem item = m_model->fileItem(index); + + if (item.isDir()) { // Open folders in new tabs emit tabRequested(item.url()); } else { - emit itemActivated(item); + items.append(item); } } + + if (items.count() == 1) { + emit itemActivated(items.first()); + } else if (items.count() > 1) { + emit itemsActivated(items); + } } void DolphinView::slotItemMiddleClicked(int index) @@ -850,7 +858,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 @@ -1227,13 +1235,22 @@ void DolphinView::updateViewState() if (!m_selectedUrls.isEmpty()) { KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager(); + + if (m_clearSelectionBeforeSelectingNewItems) { + selectionManager->clearSelection(); + m_clearSelectionBeforeSelectingNewItems = false; + } + QSet selectedItems = selectionManager->selectedItems(); - for (QList::iterator it = m_selectedUrls.begin(); it != m_selectedUrls.end(); ++it) { + QList::iterator it = m_selectedUrls.begin(); + while (it != m_selectedUrls.end()) { const int index = m_model->index(*it); if (index >= 0) { selectedItems.insert(index); - m_selectedUrls.erase(it); + it = m_selectedUrls.erase(it); + } else { + ++it; } } @@ -1544,6 +1561,7 @@ void DolphinView::markPastedUrlsAsSelected(const QMimeData* mimeData) destUrls << destination; } markUrlsAsSelected(destUrls); + m_clearSelectionBeforeSelectingNewItems = true; } void DolphinView::updateWritableState()