mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
New tab should be placed after the current tab
Summary: When opening a new using the context menu the new tab should be placed after the currently open tab, not at the end of the tab list. BUG: 403690 Test Plan: Open multiple tabs and select a different tab than the last one. Open a new tab using the context menu and see that it opens after the currently selected tab. Open a tab using Ctrl+T and see that it opens at the end. Reviewers: #dolphin, ngraham, elvisangelaccio Reviewed By: #dolphin, ngraham, elvisangelaccio Subscribers: elvisangelaccio, ngraham, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D18945
This commit is contained in:
parent
92368c1e4d
commit
17af8ae0ad
|
@ -328,7 +328,7 @@ void DolphinMainWindow::openInNewTab()
|
|||
foreach (const KFileItem& item, list) {
|
||||
const QUrl& url = DolphinView::openItemAsFolderUrl(item);
|
||||
if (!url.isEmpty()) {
|
||||
openNewTab(url);
|
||||
m_tabWidget->openNewTab(url, QUrl(), DolphinTabWidget::AfterCurrentTab);
|
||||
tabCreated = true;
|
||||
}
|
||||
}
|
||||
|
@ -336,7 +336,7 @@ void DolphinMainWindow::openInNewTab()
|
|||
// if no new tab has been created from the selection
|
||||
// open the current directory in a new tab
|
||||
if (!tabCreated) {
|
||||
openNewTab(m_activeViewContainer->url());
|
||||
m_tabWidget->openNewTab(m_activeViewContainer->url(), QUrl(), DolphinTabWidget::AfterCurrentTab);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ void DolphinTabWidget::openNewActivatedTab(const QUrl& primaryUrl, const QUrl& s
|
|||
setCurrentIndex(count() - 1);
|
||||
}
|
||||
|
||||
void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryUrl)
|
||||
void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryUrl, TabPlacement tabPlacement)
|
||||
{
|
||||
QWidget* focusWidget = QApplication::focusWidget();
|
||||
|
||||
|
@ -157,7 +157,11 @@ void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryU
|
|||
this, &DolphinTabWidget::activeViewChanged);
|
||||
connect(tabPage, &DolphinTabPage::activeViewUrlChanged,
|
||||
this, &DolphinTabWidget::tabUrlChanged);
|
||||
addTab(tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(tabPage));
|
||||
int newTabIndex = -1;
|
||||
if (tabPlacement == AfterCurrentTab) {
|
||||
newTabIndex = currentIndex() + 1;
|
||||
}
|
||||
insertTab(newTabIndex, tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(tabPage));
|
||||
|
||||
if (focusWidget) {
|
||||
// The DolphinViewContainer grabbed the keyboard focus. As the tab is opened
|
||||
|
|
|
@ -32,6 +32,19 @@ class DolphinTabWidget : public QTabWidget
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief Controls where tabs are placed
|
||||
*/
|
||||
enum TabPlacement {
|
||||
/**
|
||||
* The new tab is placed after the current tab
|
||||
*/
|
||||
AfterCurrentTab,
|
||||
/**
|
||||
* The new tab is placed after the last tab
|
||||
*/
|
||||
AfterLastTab
|
||||
};
|
||||
explicit DolphinTabWidget(QWidget* parent);
|
||||
|
||||
/**
|
||||
|
@ -105,9 +118,11 @@ public slots:
|
|||
|
||||
/**
|
||||
* Opens a new tab in the background showing the URL \a primaryUrl and the
|
||||
* optional URL \a secondaryUrl.
|
||||
* optional URL \a secondaryUrl. \a tabPlacement controls where the new tab
|
||||
* is placed.
|
||||
*/
|
||||
void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl());
|
||||
void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl(),
|
||||
TabPlacement tabPlacement = AfterLastTab);
|
||||
|
||||
/**
|
||||
* Opens each directory in \p dirs in a separate tab. If \a splitView is set,
|
||||
|
|
Loading…
Reference in a new issue