┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphintabwidget.cpp12
-rw-r--r--src/dolphintabwidget.h11
2 files changed, 20 insertions, 3 deletions
diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp
index 8eac9519d..7eae6f297 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 7905912da..28c51024c 100644
--- a/src/dolphintabwidget.h
+++ b/src/dolphintabwidget.h
@@ -29,6 +29,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)
*/
DolphinTabPage* currentTabPage() const;
@@ -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.