From e7e0f80d01d64a83e9d29745a556dca415f2ea20 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 10 Jul 2024 12:34:10 +0200 Subject: [PATCH] Fix tab order in find toolbar Explicitly add the options button to make sure that is at the correct position, and do not use multiple conflicting methods to specify tab order. This adds the various buttons back into the tab order. Fixes: QTCREATORBUG-30791 Change-Id: I5d1fbcd213b57bf4d7af98ba5d21b09e408e84b7 Reviewed-by: Thiago Macieira Reviewed-by: Christian Stenger --- src/plugins/coreplugin/find/findtoolbar.cpp | 37 ++++++--------------- src/plugins/coreplugin/find/findtoolbar.h | 1 - 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/src/plugins/coreplugin/find/findtoolbar.cpp b/src/plugins/coreplugin/find/findtoolbar.cpp index 681fa407063..0111093c27d 100644 --- a/src/plugins/coreplugin/find/findtoolbar.cpp +++ b/src/plugins/coreplugin/find/findtoolbar.cpp @@ -160,15 +160,6 @@ FindToolBar::FindToolBar(CurrentDocumentFind *currentDocumentFind) setProperty(StyleHelper::C_TOP_BORDER, true); setSingleRow(false); - QWidget::setTabOrder(m_findEdit, m_replaceEdit); - QWidget::setTabOrder(m_replaceEdit, m_findPreviousButton); - QWidget::setTabOrder(m_findPreviousButton, m_findNextButton); - QWidget::setTabOrder(m_findNextButton, m_replaceButton); - QWidget::setTabOrder(m_replaceButton, m_replaceNextButton); - QWidget::setTabOrder(m_replaceNextButton, m_replaceAllButton); - QWidget::setTabOrder(m_replaceAllButton, m_advancedButton); - QWidget::setTabOrder(m_advancedButton, m_close); - connect(m_findEdit, &Utils::FancyLineEdit::editingFinished, this, &FindToolBar::invokeResetIncrementalSearch); connect(m_findEdit, &Utils::FancyLineEdit::textChanged, @@ -447,6 +438,17 @@ FindToolBar::FindToolBar(CurrentDocumentFind *currentDocumentFind) connect(&m_findStepTimer, &QTimer::timeout, this, &FindToolBar::invokeFindStep); setLightColoredIcon(isLightColored()); + + QWidget::setTabOrder(m_findEdit->button(FancyLineEdit::Left), m_findEdit); + QWidget::setTabOrder(m_findEdit, m_replaceEdit); + QWidget::setTabOrder(m_replaceEdit, m_findPreviousButton); + QWidget::setTabOrder(m_findPreviousButton, m_findNextButton); + QWidget::setTabOrder(m_findNextButton, m_selectAllButton); + QWidget::setTabOrder(m_selectAllButton, m_replaceButton); + QWidget::setTabOrder(m_replaceButton, m_replaceNextButton); + QWidget::setTabOrder(m_replaceNextButton, m_replaceAllButton); + QWidget::setTabOrder(m_replaceAllButton, m_advancedButton); + QWidget::setTabOrder(m_advancedButton, m_close); } FindToolBar::~FindToolBar() = default; @@ -1024,23 +1026,6 @@ void FindToolBar::selectAll() } } -bool FindToolBar::focusNextPrevChild(bool next) -{ - QAbstractButton *optionsButton = m_findEdit->button(Utils::FancyLineEdit::Left); - // close tab order - if (next && m_advancedButton->hasFocus()) - optionsButton->setFocus(Qt::TabFocusReason); - else if (next && optionsButton->hasFocus()) - m_findEdit->setFocus(Qt::TabFocusReason); - else if (!next && optionsButton->hasFocus()) - m_advancedButton->setFocus(Qt::TabFocusReason); - else if (!next && m_findEdit->hasFocus()) - optionsButton->setFocus(Qt::TabFocusReason); - else - return Utils::StyledBar::focusNextPrevChild(next); - return true; -} - void FindToolBar::resizeEvent(QResizeEvent *event) { Q_UNUSED(event) diff --git a/src/plugins/coreplugin/find/findtoolbar.h b/src/plugins/coreplugin/find/findtoolbar.h index 1080407dae9..e5ddbf8c75c 100644 --- a/src/plugins/coreplugin/find/findtoolbar.h +++ b/src/plugins/coreplugin/find/findtoolbar.h @@ -64,7 +64,6 @@ public slots: void setBackward(bool backward); protected: - bool focusNextPrevChild(bool next) override; void resizeEvent(QResizeEvent *event) override; private: