diff options
author | Axel Spoerl <axel.spoerl@qt.io> | 2023-06-24 11:52:18 +0200 |
---|---|---|
committer | Axel Spoerl <axel.spoerl@qt.io> | 2023-07-06 08:41:04 +0200 |
commit | bbb71e7e80f292c2e69faef81b1624832981147e (patch) | |
tree | c8f1a60defc2725399dc94f4e205120cea006a96 /src/widgets/widgets/qdialogbuttonbox.h | |
parent | ef9fe7a99a9a6779e7133167fe84426bfe9cc371 (diff) |
QDialogButtonBox - Update focus chain when buttons show or hide
Hiding a button in a QDialogButtonBox doesn't remove its default and
focus behavior. Hiding the button shown in the first position, breaks
the focus chain. Tabbing between the button is no longer possible.
This patch implements listening to the buttons' HideToParent and
ShowToParent events. Hidden buttons are removed from the button box
and kept in a separate hash. That ensures focus chain consistency.
When they are shown again, they are added to the button logic and
their default/focus behavior is restored.
An autotest is added in tst_QDialogButtonBox.
Fixes: QTBUG-114377
Pick-to: 6.6 6.5
Change-Id: Id10c4675f43d6007206e41c694688c4f0a34ee52
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/widgets/widgets/qdialogbuttonbox.h')
-rw-r--r-- | src/widgets/widgets/qdialogbuttonbox.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/widgets/widgets/qdialogbuttonbox.h b/src/widgets/widgets/qdialogbuttonbox.h index d967494d0d..4c116b5bab 100644 --- a/src/widgets/widgets/qdialogbuttonbox.h +++ b/src/widgets/widgets/qdialogbuttonbox.h @@ -107,6 +107,8 @@ public: void setCenterButtons(bool center); bool centerButtons() const; + bool eventFilter(QObject *object, QEvent *event) override; + Q_SIGNALS: void clicked(QAbstractButton *button); void accepted(); |