mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
DolphinTabWidget: Allow specifying new tab position in openNewTab
This commit is contained in:
parent
57f694453a
commit
8402b98995
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in a new issue