]> cloud.milkyroute.net Git - dolphin.git/commitdiff
DolphinTabWidget: Allow specifying new tab position in openNewTab
authorKai Uwe Broulik <kde@privat.broulik.de>
Sun, 2 Oct 2022 11:08:54 +0000 (13:08 +0200)
committerKai Uwe Broulik <kde@privat.broulik.de>
Thu, 6 Oct 2022 12:21:15 +0000 (12:21 +0000)
src/dolphintabwidget.cpp
src/dolphintabwidget.h

index 8eac9519d289830e2a710d6d4a38a2ccc9610bad..7eae6f297ec3ef4154c6b31abf8144dbe028248f 100644 (file)
@@ -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;
     }
 
index 7905912dacbdf5b5fa0f0ef40fbfc1e34959aadb..28c51024c8ed65caf5bf71f5ccc3057f5162a320 100644 (file)
@@ -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.