DolphinTabWidget: Allow specifying new tab position in openNewTab

This commit is contained in:
Kai Uwe Broulik 2022-10-02 13:08:54 +02:00
parent 57f694453a
commit 8402b98995
2 changed files with 20 additions and 3 deletions

View 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(); QWidget* focusWidget = QApplication::focusWidget();
@ -173,8 +173,16 @@ void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryU
tabBar()->setTabText(tabIndex, tabName(tabPage)); tabBar()->setTabText(tabIndex, tabName(tabPage));
}); });
if (position == NewTabPosition::FollowSetting) {
if (GeneralSettings::openNewTabAfterLastTab()) {
position = NewTabPosition::AtEnd;
} else {
position = NewTabPosition::AfterCurrent;
}
}
int newTabIndex = -1; int newTabIndex = -1;
if (!GeneralSettings::openNewTabAfterLastTab()) { if (position == NewTabPosition::AfterCurrent || (position == NewTabPosition::FollowSetting && !GeneralSettings::openNewTabAfterLastTab())) {
newTabIndex = currentIndex() + 1; newTabIndex = currentIndex() + 1;
} }

View file

@ -28,6 +28,15 @@ public:
*/ */
explicit DolphinTabWidget(DolphinNavigatorsWidgetAction *navigatorsWidget, QWidget *parent); 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) * @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 * Opens a new tab in the background showing the URL \a primaryUrl and the
* optional URL \a secondaryUrl. * 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. * Opens each directory in \p dirs in a separate tab unless it is already open.