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;