┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Hallas <[email protected]>2019-02-12 11:07:43 +0100
committerDavid Hallas <[email protected]>2019-02-16 16:51:44 +0100
commit17af8ae0ad9092e2f64f8fb612ac39d3b078a266 (patch)
tree496bc4c7dfe865ae25c48f888ce364b0d6f20a2a /src
parent92368c1e4df9ea09e50c6480c2f72b78416e3244 (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
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp4
-rw-r--r--src/dolphintabwidget.cpp8
-rw-r--r--src/dolphintabwidget.h19
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,