From a115ec5d1b8598191003fd1fff6f8e43fe9e042f Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 1 Nov 2016 21:02:02 +0100 Subject: GroupBox: fix accessibility support Change-Id: Ifbbc701a996ed9ddb13f7d16843d0af5ee480ca1 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickgroupbox.cpp | 17 +++++++++++++++++ src/quicktemplates2/qquickgroupbox_p.h | 5 +++++ tests/auto/accessibility/data/groupbox.qml | 13 +++++++++++++ tests/auto/accessibility/tst_accessibility.cpp | 2 +- 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 tests/auto/accessibility/data/groupbox.qml diff --git a/src/quicktemplates2/qquickgroupbox.cpp b/src/quicktemplates2/qquickgroupbox.cpp index 5a5a8005..996351a7 100644 --- a/src/quicktemplates2/qquickgroupbox.cpp +++ b/src/quicktemplates2/qquickgroupbox.cpp @@ -118,6 +118,7 @@ void QQuickGroupBox::setTitle(const QString &title) return; d->title = title; + setAccessibleName(title); emit titleChanged(); } @@ -152,4 +153,20 @@ QFont QQuickGroupBox::defaultFont() const return QQuickControlPrivate::themeFont(QPlatformTheme::GroupBoxTitleFont); } +#ifndef QT_NO_ACCESSIBILITY +QAccessible::Role QQuickGroupBox::accessibleRole() const +{ + return QAccessible::Grouping; +} + +void QQuickGroupBox::accessibilityActiveChanged(bool active) +{ + Q_D(QQuickGroupBox); + QQuickFrame::accessibilityActiveChanged(active); + + if (active) + setAccessibleName(d->title); +} +#endif // QT_NO_ACCESSIBILITY + QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickgroupbox_p.h b/src/quicktemplates2/qquickgroupbox_p.h index 0f1bdc54..98f6ad06 100644 --- a/src/quicktemplates2/qquickgroupbox_p.h +++ b/src/quicktemplates2/qquickgroupbox_p.h @@ -76,6 +76,11 @@ Q_SIGNALS: protected: QFont defaultFont() const override; +#ifndef QT_NO_ACCESSIBILITY + QAccessible::Role accessibleRole() const override; + void accessibilityActiveChanged(bool active) override; +#endif + private: Q_DISABLE_COPY(QQuickGroupBox) Q_DECLARE_PRIVATE(QQuickGroupBox) diff --git a/tests/auto/accessibility/data/groupbox.qml b/tests/auto/accessibility/data/groupbox.qml new file mode 100644 index 00000000..e454cbfd --- /dev/null +++ b/tests/auto/accessibility/data/groupbox.qml @@ -0,0 +1,13 @@ +import QtQuick 2.5 +import QtQuick.Window 2.2 +import QtQuick.Controls 2.0 + +Window { + visible: true + + GroupBox { + id: groupbox + objectName: "groupbox" + title: "GroupBox" + } +} diff --git a/tests/auto/accessibility/tst_accessibility.cpp b/tests/auto/accessibility/tst_accessibility.cpp index e486e6f9..80f0a5b0 100644 --- a/tests/auto/accessibility/tst_accessibility.cpp +++ b/tests/auto/accessibility/tst_accessibility.cpp @@ -75,7 +75,7 @@ void tst_accessibility::a11y_data() QTest::newRow("CheckBox") << "checkbox" << 0x0000002C << "CheckBox"; //QAccessible::CheckBox QTest::newRow("ComboBox") << "combobox" << 0x0000002E << "ComboBox"; //QAccessible::ComboBox // Frame - // GroupBox + QTest::newRow("GroupBox") << "groupbox" << 0x00000014 << "GroupBox"; //QAccessible::Grouping QTest::newRow("Label") << "label" << 0x00000029 << "Label"; //QAccessible::StaticText QTest::newRow("Menu") << "menu" << 0x0000000B << ""; //QAccessible::PopupMenu QTest::newRow("Page") << "page" << 0x00000025 << "Page"; //QAccessible::PageTab -- cgit v1.2.3