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;
}
}
// 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);
}
}
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();
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
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);
/**
/**
* 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,