diff options
author | Tor Arne Vestbø <tor.arne.vestbo@digia.com> | 2014-09-19 15:27:16 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@digia.com> | 2014-09-20 00:21:24 +0200 |
commit | 076d22efa63de107d36ec33d978e6365f70a1f15 (patch) | |
tree | bff724d1435855fc3caeafe3bbca025e00c223c3 /src/widgets/accessible/qaccessiblewidgetfactory.cpp | |
parent | 40add779bd13d5101d07b2319d15e96e543cd35f (diff) |
a11y: Make QAccessibleButton and friends resolve role dynamically
The role may changed based on the checkable state of the button, eg, so
we need to resolve the role at runtime instead of hard-coding it in the
constructor.
Change-Id: I78faee08189c5510ca9964b07ad94bcf5d4fa11b
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Diffstat (limited to 'src/widgets/accessible/qaccessiblewidgetfactory.cpp')
-rw-r--r-- | src/widgets/accessible/qaccessiblewidgetfactory.cpp | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/src/widgets/accessible/qaccessiblewidgetfactory.cpp b/src/widgets/accessible/qaccessiblewidgetfactory.cpp index fb81a4aaeb..faf23542dc 100644 --- a/src/widgets/accessible/qaccessiblewidgetfactory.cpp +++ b/src/widgets/accessible/qaccessiblewidgetfactory.cpp @@ -95,37 +95,13 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje #endif #ifndef QT_NO_TOOLBUTTON } else if (classname == QLatin1String("QToolButton")) { - QAccessible::Role role = QAccessible::NoRole; -#ifndef QT_NO_MENU - QToolButton *tb = qobject_cast<QToolButton*>(widget); - if (!tb->menu()) - role = tb->isCheckable() ? QAccessible::CheckBox : QAccessible::PushButton; - else if (tb->popupMode() == QToolButton::DelayedPopup) - role = QAccessible::ButtonDropDown; - else -#endif - role = QAccessible::ButtonMenu; - iface = new QAccessibleToolButton(widget, role); + iface = new QAccessibleToolButton(widget); #endif // QT_NO_TOOLBUTTON - } else if (classname == QLatin1String("QCheckBox")) { - iface = new QAccessibleButton(widget, QAccessible::CheckBox); - } else if (classname == QLatin1String("QRadioButton")) { - iface = new QAccessibleButton(widget, QAccessible::RadioButton); - } else if (classname == QLatin1String("QPushButton")) { - QAccessible::Role role = QAccessible::NoRole; - QPushButton *pb = qobject_cast<QPushButton*>(widget); -#ifndef QT_NO_MENU - if (pb->menu()) - role = QAccessible::ButtonMenu; - else -#endif - if (pb->isCheckable()) - role = QAccessible::CheckBox; - else - role = QAccessible::PushButton; - iface = new QAccessibleButton(widget, role); - } else if (classname == QLatin1String("QAbstractButton")) { - iface = new QAccessibleButton(widget, QAccessible::PushButton); + } else if (classname == QLatin1String("QCheckBox") + || classname == QLatin1String("QRadioButton") + || classname == QLatin1String("QPushButton") + || classname == QLatin1String("QAbstractButton")) { + iface = new QAccessibleButton(widget); } else if (classname == QLatin1String("QDialog")) { iface = new QAccessibleWidget(widget, QAccessible::Dialog); } else if (classname == QLatin1String("QMessageBox")) { |