diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 8be788eaea..3e4a60571f 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -328,7 +328,7 @@ void DolphinMainWindow::openInNewTab() foreach (const KFileItem& item, list) { const QUrl& url = DolphinView::openItemAsFolderUrl(item); if (!url.isEmpty()) { - openNewTab(url); + m_tabWidget->openNewTab(url, QUrl(), DolphinTabWidget::AfterCurrentTab); tabCreated = true; } } @@ -336,7 +336,7 @@ void DolphinMainWindow::openInNewTab() // if no new tab has been created from the selection // open the current directory in a new tab if (!tabCreated) { - openNewTab(m_activeViewContainer->url()); + m_tabWidget->openNewTab(m_activeViewContainer->url(), QUrl(), DolphinTabWidget::AfterCurrentTab); } } diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index c708c64947..73c2752428 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -147,7 +147,7 @@ void DolphinTabWidget::openNewActivatedTab(const QUrl& primaryUrl, const QUrl& s setCurrentIndex(count() - 1); } -void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryUrl) +void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryUrl, TabPlacement tabPlacement) { QWidget* focusWidget = QApplication::focusWidget(); @@ -157,7 +157,11 @@ void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryU this, &DolphinTabWidget::activeViewChanged); connect(tabPage, &DolphinTabPage::activeViewUrlChanged, this, &DolphinTabWidget::tabUrlChanged); - addTab(tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(tabPage)); + int newTabIndex = -1; + if (tabPlacement == AfterCurrentTab) { + newTabIndex = currentIndex() + 1; + } + insertTab(newTabIndex, tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(tabPage)); if (focusWidget) { // The DolphinViewContainer grabbed the keyboard focus. As the tab is opened diff --git a/src/dolphintabwidget.h b/src/dolphintabwidget.h index 0cb662966a..85b2d66f0a 100644 --- a/src/dolphintabwidget.h +++ b/src/dolphintabwidget.h @@ -32,6 +32,19 @@ class DolphinTabWidget : public QTabWidget Q_OBJECT public: + /** + * @brief Controls where tabs are placed + */ + enum TabPlacement { + /** + * The new tab is placed after the current tab + */ + AfterCurrentTab, + /** + * The new tab is placed after the last tab + */ + AfterLastTab + }; explicit DolphinTabWidget(QWidget* parent); /** @@ -105,9 +118,11 @@ public slots: /** * Opens a new tab in the background showing the URL \a primaryUrl and the - * optional URL \a secondaryUrl. + * optional URL \a secondaryUrl. \a tabPlacement controls where the new tab + * is placed. */ - void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl()); + void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl(), + TabPlacement tabPlacement = AfterLastTab); /** * Opens each directory in \p dirs in a separate tab. If \a splitView is set,