diff options
| author | Emmanuel Pescosta <[email protected]> | 2012-12-13 22:54:09 +0100 |
|---|---|---|
| committer | Emmanuel Pescosta <[email protected]> | 2012-12-13 22:54:09 +0100 |
| commit | 3535a20207245cf8b1325ada9007469d0d1c3ec7 (patch) | |
| tree | 1a59a4703377877584b283c7f5c3f506f3cf7737 /src/views | |
| parent | e348bc58267b3dc06f2fc044f9e5ce5a5dfcd087 (diff) | |
Fix Bug 304299 - Dolphin launches multiple instances of a program when multiple files are selected
BUG: 304299
REVIEW: 107305
Diffstat (limited to 'src/views')
| -rw-r--r-- | src/views/dolphinview.cpp | 31 | ||||
| -rw-r--r-- | src/views/dolphinview.h | 6 |
2 files changed, 24 insertions, 13 deletions
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 57c94a33b..941083fde 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -792,29 +792,34 @@ void DolphinView::slotItemsActivated(const QSet<int>& indexes) { Q_ASSERT(indexes.count() >= 2); - KFileItemList items; - - QSetIterator<int> it(indexes); - while (it.hasNext()) { - const int index = it.next(); - items.append(m_model->fileItem(index)); - } - - if (items.count() > 5) { - QString question = i18np("Are you sure you want to open 1 item?", "Are you sure you want to open %1 items?", 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<int> 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) diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 6d15ebf32..a2fe9f62a 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -386,6 +386,12 @@ signals: void itemActivated(const KFileItem& item); /** + * Is emitted when multiple items have been activated by e. g. + * context menu open with. + */ + void itemsActivated(const KFileItemList& items); + + /** * Is emitted if items have been added or deleted. */ void itemCountChanged(); |
