mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-17 15:31:20 +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) {
|
foreach (const KFileItem& item, list) {
|
||||||
const QUrl& url = DolphinView::openItemAsFolderUrl(item);
|
const QUrl& url = DolphinView::openItemAsFolderUrl(item);
|
||||||
if (!url.isEmpty()) {
|
if (!url.isEmpty()) {
|
||||||
openNewTab(url);
|
m_tabWidget->openNewTab(url, QUrl(), DolphinTabWidget::AfterCurrentTab);
|
||||||
tabCreated = true;
|
tabCreated = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -336,7 +336,7 @@ void DolphinMainWindow::openInNewTab()
|
||||||
// if no new tab has been created from the selection
|
// if no new tab has been created from the selection
|
||||||
// open the current directory in a new tab
|
// open the current directory in a new tab
|
||||||
if (!tabCreated) {
|
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);
|
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();
|
QWidget* focusWidget = QApplication::focusWidget();
|
||||||
|
|
||||||
|
@ -157,7 +157,11 @@ void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryU
|
||||||
this, &DolphinTabWidget::activeViewChanged);
|
this, &DolphinTabWidget::activeViewChanged);
|
||||||
connect(tabPage, &DolphinTabPage::activeViewUrlChanged,
|
connect(tabPage, &DolphinTabPage::activeViewUrlChanged,
|
||||||
this, &DolphinTabWidget::tabUrlChanged);
|
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) {
|
if (focusWidget) {
|
||||||
// The DolphinViewContainer grabbed the keyboard focus. As the tab is opened
|
// The DolphinViewContainer grabbed the keyboard focus. As the tab is opened
|
||||||
|
|
|
@ -32,6 +32,19 @@ class DolphinTabWidget : public QTabWidget
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
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);
|
explicit DolphinTabWidget(QWidget* parent);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -105,9 +118,11 @@ public 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. \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,
|
* Opens each directory in \p dirs in a separate tab. If \a splitView is set,
|
||||||
|
|
Loading…
Reference in a new issue