Skip to content

Commit d671632

Browse files
authored
Improve tab key focus in hidable tab bar widget
PR #23379.
1 parent 312e914 commit d671632

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/gui/hidabletabwidget.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,28 @@
3838
HidableTabWidget::HidableTabWidget(QWidget *parent)
3939
: QTabWidget(parent)
4040
{
41+
// Skip single tab in keyboard navigation (no point navigating to it)
42+
tabBar()->setFocusPolicy(Qt::NoFocus);
4143
}
4244

4345
void HidableTabWidget::tabInserted(const int index)
4446
{
4547
QTabWidget::tabInserted(index);
46-
tabBar()->setVisible(count() != 1);
48+
tabsCountChanged();
4749
}
4850

4951
void HidableTabWidget::tabRemoved(const int index)
5052
{
51-
//QTabWidget::tabInserted(index);
5253
QTabWidget::tabRemoved(index);
53-
tabBar()->setVisible(count() != 1);
54+
tabsCountChanged();
55+
}
56+
57+
void HidableTabWidget::tabsCountChanged()
58+
{
59+
const qsizetype tabsCount = count();
60+
tabBar()->setVisible(tabsCount != 1);
61+
// Skip single tab in keyboard navigation (no point navigating to it)
62+
tabBar()->setFocusPolicy((tabsCount > 1) ? Qt::StrongFocus : Qt::NoFocus);
5463
}
5564

5665
#ifdef Q_OS_MACOS

src/gui/hidabletabwidget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class HidableTabWidget final : public QTabWidget
4242
private:
4343
void tabInserted(int index) override;
4444
void tabRemoved(int index) override;
45+
void tabsCountChanged();
4546

4647
#ifdef Q_OS_MACOS
4748
void paintEvent(QPaintEvent *event) override;

0 commit comments

Comments
 (0)