From 8402b989957a5b9e44274b17b1cba289fc3544f0 Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Sun, 2 Oct 2022 13:08:54 +0200 Subject: [PATCH] DolphinTabWidget: Allow specifying new tab position in openNewTab --- src/dolphintabwidget.cpp | 12 ++++++++++-- src/dolphintabwidget.h | 11 ++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index 8eac9519d2..7eae6f297e 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -157,7 +157,7 @@ void DolphinTabWidget::openNewActivatedTab(const QUrl& primaryUrl, const QUrl& s } } -void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryUrl) +void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryUrl, DolphinTabWidget::NewTabPosition position) { QWidget* focusWidget = QApplication::focusWidget(); @@ -173,8 +173,16 @@ void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryU tabBar()->setTabText(tabIndex, tabName(tabPage)); }); + if (position == NewTabPosition::FollowSetting) { + if (GeneralSettings::openNewTabAfterLastTab()) { + position = NewTabPosition::AtEnd; + } else { + position = NewTabPosition::AfterCurrent; + } + } + int newTabIndex = -1; - if (!GeneralSettings::openNewTabAfterLastTab()) { + if (position == NewTabPosition::AfterCurrent || (position == NewTabPosition::FollowSetting && !GeneralSettings::openNewTabAfterLastTab())) { newTabIndex = currentIndex() + 1; } diff --git a/src/dolphintabwidget.h b/src/dolphintabwidget.h index 7905912dac..28c51024c8 100644 --- a/src/dolphintabwidget.h +++ b/src/dolphintabwidget.h @@ -28,6 +28,15 @@ public: */ explicit DolphinTabWidget(DolphinNavigatorsWidgetAction *navigatorsWidget, QWidget *parent); + /** + * Where a newly opened tab should be placed. + */ + enum class NewTabPosition { + FollowSetting, ///< Honor openNewTabAfterLastTab setting + AfterCurrent, ///< After the current tab + AtEnd, ///< At the end of the tab bar + }; + /** * @return Tab page at the current index (can be 0 if tabs count is smaller than 1) */ @@ -113,7 +122,7 @@ public Q_SLOTS: * Opens a new tab in the background showing the URL \a primaryUrl and the * optional URL \a secondaryUrl. */ - void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl()); + void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl(), NewTabPosition position = NewTabPosition::FollowSetting); /** * Opens each directory in \p dirs in a separate tab unless it is already open.