X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/a6313a5c98893fa7f3c107d59c4ddcd1a627b272..a1c9bc5595a21299dab9260c6a77c0561c95c8ba:/src/dolphintabwidget.cpp diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index 9bfd6076a..b2f838a40 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -9,6 +9,7 @@ #include "dolphin_generalsettings.h" #include "dolphintabbar.h" #include "dolphinviewcontainer.h" +#include "views/draganddrophelper.h" #include #include @@ -20,10 +21,10 @@ #include #include +#include DolphinTabWidget::DolphinTabWidget(DolphinNavigatorsWidgetAction *navigatorsWidget, QWidget *parent) : QTabWidget(parent) - , m_dragAndDropHelper{this} , m_lastViewedTab(nullptr) , m_navigatorsWidget{navigatorsWidget} { @@ -37,12 +38,20 @@ DolphinTabWidget::DolphinTabWidget(DolphinNavigatorsWidgetAction *navigatorsWidg connect(tabBar, &DolphinTabBar::tabDragMoveEvent, this, &DolphinTabWidget::tabDragMoveEvent); connect(tabBar, &DolphinTabBar::tabDropEvent, this, &DolphinTabWidget::tabDropEvent); connect(tabBar, &DolphinTabBar::tabDetachRequested, this, &DolphinTabWidget::detachTab); + connect(tabBar, &DolphinTabBar::tabRenamed, this, &DolphinTabWidget::renameTab); setTabBar(tabBar); setDocumentMode(true); setElideMode(Qt::ElideRight); setUsesScrollButtons(true); setTabBarAutoHide(true); + + auto stackWidget{findChild()}; + // i18n: This accessible name will be announced any time the user moves keyboard focus e.g. from the toolbar or the places panel towards the main working + // area of Dolphin. It gives structure. This container does not only contain the main view but also the status bar, the search panel, filter, and selection + // mode bars, so calling it just a "View" is a bit wrong, but hopefully still gets the point across. + stackWidget->setAccessibleName(i18nc("accessible name of Dolphin's view container", "Location View")); // Without this call, the non-descript Qt provided + // "Layered Pane" role is announced. } DolphinTabPage *DolphinTabWidget::currentTabPage() const @@ -114,6 +123,13 @@ void DolphinTabWidget::refreshViews() void DolphinTabWidget::updateTabName(int index) { Q_ASSERT(index >= 0); + + if (!tabPageAt(index)->customLabel().isEmpty()) { + QString name = tabPageAt(index)->customLabel(); + tabBar()->setTabText(index, name); + return; + } + tabBar()->setTabText(index, tabName(tabPageAt(index))); } @@ -162,7 +178,7 @@ void DolphinTabWidget::openNewActivatedTab(const QUrl &primaryUrl, const QUrl &s } } -void DolphinTabWidget::openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl, DolphinTabWidget::NewTabPosition position) +DolphinTabPage *DolphinTabWidget::openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl, DolphinTabWidget::NewTabPosition position) { QWidget *focusWidget = QApplication::focusWidget(); @@ -194,6 +210,7 @@ void DolphinTabWidget::openNewTab(const QUrl &primaryUrl, const QUrl &secondaryU // in background, assure that the previous focused widget gets the focus back. focusWidget->setFocus(); } + return tabPage; } void DolphinTabWidget::openDirectories(const QList &dirs, bool splitView) @@ -394,7 +411,7 @@ void DolphinTabWidget::tabDragMoveEvent(int index, QDragMoveEvent *event) { if (index >= 0) { DolphinView *view = tabPageAt(index)->activeViewContainer()->view(); - m_dragAndDropHelper.updateDropAction(event, view->url()); + DragAndDropHelper::updateDropAction(event, view->url()); } } @@ -463,6 +480,12 @@ void DolphinTabWidget::currentTabChanged(int index) m_lastViewedTab = tabPage; } +void DolphinTabWidget::renameTab(int index, const QString &name) +{ + tabPageAt(index)->setCustomLabel(name); + updateTabName(index); +} + void DolphinTabWidget::tabInserted(int index) { QTabWidget::tabInserted(index);