diff --git a/dolphin/src/dolphincontextmenu.cpp b/dolphin/src/dolphincontextmenu.cpp index af8b613849..cddcc8936c 100644 --- a/dolphin/src/dolphincontextmenu.cpp +++ b/dolphin/src/dolphincontextmenu.cpp @@ -235,6 +235,20 @@ void DolphinContextMenu::openItemContextMenu() this); addAction(openParentInNewTabAction); + addSeparator(); + } + } else { + bool selectionHasOnlyDirs = true; + foreach (const KFileItem& item, m_selectedItems) { + if (!item.isDir()) { + selectionHasOnlyDirs = false; + break; + } + } + + if (selectionHasOnlyDirs) { + // insert 'Open in new tab' entry + addAction(m_mainWindow->actionCollection()->action("open_in_new_tabs")); addSeparator(); } } diff --git a/dolphin/src/dolphinmainwindow.cpp b/dolphin/src/dolphinmainwindow.cpp index 347489d6b4..3b169a57da 100644 --- a/dolphin/src/dolphinmainwindow.cpp +++ b/dolphin/src/dolphinmainwindow.cpp @@ -520,11 +520,15 @@ void DolphinMainWindow::activatePrevTab() void DolphinMainWindow::openInNewTab() { - const KFileItemList list = m_activeViewContainer->view()->selectedItems(); + const KFileItemList& list = m_activeViewContainer->view()->selectedItems(); if (list.isEmpty()) { openNewTab(m_activeViewContainer->url()); - } else if ((list.count() == 1) && list[0].isDir()) { - openNewTab(list[0].url()); + } else { + foreach (const KFileItem& item, list) { + if (item.isDir()) { + openNewTab(item.url()); + } + } } } @@ -1645,6 +1649,11 @@ void DolphinMainWindow::setupActions() openInNewTab->setIcon(KIcon("tab-new")); connect(openInNewTab, SIGNAL(triggered()), this, SLOT(openInNewTab())); + KAction* openInNewTabs = actionCollection()->addAction("open_in_new_tabs"); + openInNewTabs->setText(i18nc("@action:inmenu", "Open in New Tabs")); + openInNewTabs->setIcon(KIcon("tab-new")); + connect(openInNewTabs, SIGNAL(triggered()), this, SLOT(openInNewTab())); + KAction* openInNewWindow = actionCollection()->addAction("open_in_new_window"); openInNewWindow->setText(i18nc("@action:inmenu", "Open in New Window")); openInNewWindow->setIcon(KIcon("window-new"));