From d67163269bcc08dda83268c16f4d7767fe558455 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sun, 19 Oct 2025 03:08:28 -0400 Subject: [PATCH] Improve tab key focus in hidable tab bar widget PR #23379. --- src/gui/hidabletabwidget.cpp | 15 ++++++++++++--- src/gui/hidabletabwidget.h | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/gui/hidabletabwidget.cpp b/src/gui/hidabletabwidget.cpp index fb2e88df0..7256a05b7 100644 --- a/src/gui/hidabletabwidget.cpp +++ b/src/gui/hidabletabwidget.cpp @@ -38,19 +38,28 @@ HidableTabWidget::HidableTabWidget(QWidget *parent) : QTabWidget(parent) { + // Skip single tab in keyboard navigation (no point navigating to it) + tabBar()->setFocusPolicy(Qt::NoFocus); } void HidableTabWidget::tabInserted(const int index) { QTabWidget::tabInserted(index); - tabBar()->setVisible(count() != 1); + tabsCountChanged(); } void HidableTabWidget::tabRemoved(const int index) { - //QTabWidget::tabInserted(index); QTabWidget::tabRemoved(index); - tabBar()->setVisible(count() != 1); + tabsCountChanged(); +} + +void HidableTabWidget::tabsCountChanged() +{ + const qsizetype tabsCount = count(); + tabBar()->setVisible(tabsCount != 1); + // Skip single tab in keyboard navigation (no point navigating to it) + tabBar()->setFocusPolicy((tabsCount > 1) ? Qt::StrongFocus : Qt::NoFocus); } #ifdef Q_OS_MACOS diff --git a/src/gui/hidabletabwidget.h b/src/gui/hidabletabwidget.h index 66442475b..2c54556fe 100644 --- a/src/gui/hidabletabwidget.h +++ b/src/gui/hidabletabwidget.h @@ -42,6 +42,7 @@ public: private: void tabInserted(int index) override; void tabRemoved(int index) override; + void tabsCountChanged(); #ifdef Q_OS_MACOS void paintEvent(QPaintEvent *event) override;