summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qdialogbuttonbox.h
diff options
context:
space:
mode:
authorAxel Spoerl <axel.spoerl@qt.io>2023-06-24 11:52:18 +0200
committerAxel Spoerl <axel.spoerl@qt.io>2023-07-06 08:41:04 +0200
commitbbb71e7e80f292c2e69faef81b1624832981147e (patch)
treec8f1a60defc2725399dc94f4e205120cea006a96 /src/widgets/widgets/qdialogbuttonbox.h
parentef9fe7a99a9a6779e7133167fe84426bfe9cc371 (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.h2
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();