┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views
diff options
context:
space:
mode:
authorEmmanuel Pescosta <[email protected]>2012-12-13 22:54:09 +0100
committerEmmanuel Pescosta <[email protected]>2012-12-13 22:54:09 +0100
commit3535a20207245cf8b1325ada9007469d0d1c3ec7 (patch)
tree1a59a4703377877584b283c7f5c3f506f3cf7737 /src/views
parente348bc58267b3dc06f2fc044f9e5ce5a5dfcd087 (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.cpp31
-rw-r--r--src/views/dolphinview.h6
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();