diff options
| author | David Hallas <[email protected]> | 2019-02-12 11:07:43 +0100 |
|---|---|---|
| committer | David Hallas <[email protected]> | 2019-02-16 16:51:44 +0100 |
| commit | 17af8ae0ad9092e2f64f8fb612ac39d3b078a266 (patch) | |
| tree | 496bc4c7dfe865ae25c48f888ce364b0d6f20a2a | |
| parent | 92368c1e4df9ea09e50c6480c2f72b78416e3244 (diff) | |
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
| -rw-r--r-- | src/dolphinmainwindow.cpp | 4 | ||||
| -rw-r--r-- | src/dolphintabwidget.cpp | 8 | ||||
| -rw-r--r-- | src/dolphintabwidget.h | 19 |
3 files changed, 25 insertions, 6 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 8be788eae..3e4a60571 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -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); } } diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index c708c6494..73c275242 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -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 diff --git a/src/dolphintabwidget.h b/src/dolphintabwidget.h index 0cb662966..85b2d66f0 100644 --- a/src/dolphintabwidget.h +++ b/src/dolphintabwidget.h @@ -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, |
