diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/accessible/qaccessiblewidgetfactory.cpp | 2 | ||||
-rw-r--r-- | src/widgets/accessible/simplewidgets.cpp | 43 | ||||
-rw-r--r-- | src/widgets/accessible/simplewidgets_p.h | 11 |
3 files changed, 55 insertions, 1 deletions
diff --git a/src/widgets/accessible/qaccessiblewidgetfactory.cpp b/src/widgets/accessible/qaccessiblewidgetfactory.cpp index c0a025e048..01ada3a5c5 100644 --- a/src/widgets/accessible/qaccessiblewidgetfactory.cpp +++ b/src/widgets/accessible/qaccessiblewidgetfactory.cpp @@ -85,7 +85,7 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje } else if (classname == "QDialog"_L1) { iface = new QAccessibleWidget(widget, QAccessible::Dialog); } else if (classname == "QMessageBox"_L1) { - iface = new QAccessibleWidget(widget, QAccessible::AlertMessage); + iface = new QAccessibleMessageBox(widget); #if QT_CONFIG(mainwindow) } else if (classname == "QMainWindow"_L1) { iface = new QAccessibleMainWindow(widget); diff --git a/src/widgets/accessible/simplewidgets.cpp b/src/widgets/accessible/simplewidgets.cpp index f149bad170..bb0f8401d3 100644 --- a/src/widgets/accessible/simplewidgets.cpp +++ b/src/widgets/accessible/simplewidgets.cpp @@ -43,6 +43,8 @@ #ifndef QT_NO_PICTURE #include <QtGui/qpicture.h> #endif +#include <qmessagebox.h> +#include <qdialogbuttonbox.h> #include <qstyle.h> #include <qstyleoption.h> #include <qtextdocument.h> @@ -951,6 +953,47 @@ QWindowContainer *QAccessibleWindowContainer::container() const return static_cast<QWindowContainer *>(widget()); } +/*! + \internal + Implements QAccessibleWidget for QMessageBox +*/ +QAccessibleMessageBox::QAccessibleMessageBox(QWidget *widget) + : QAccessibleWidget(widget, QAccessible::AlertMessage) +{ + Q_ASSERT(qobject_cast<QMessageBox *>(widget)); +} + +QMessageBox *QAccessibleMessageBox::messageBox() const +{ + return static_cast<QMessageBox *>(widget()); +} + +QString QAccessibleMessageBox::text(QAccessible::Text t) const +{ + QString str; + + switch (t) { + case QAccessible::Name: + str = QAccessibleWidget::text(t); + if (str.isEmpty()) // implies no title text is set + str = messageBox()->text(); + break; + case QAccessible::Description: + str = widget()->accessibleDescription(); + break; + case QAccessible::Value: + str = messageBox()->text(); + break; + case QAccessible::Help: + str = messageBox()->informativeText(); + break; + default: + break; + } + + return str; +} + #endif // QT_CONFIG(accessibility) QT_END_NAMESPACE diff --git a/src/widgets/accessible/simplewidgets_p.h b/src/widgets/accessible/simplewidgets_p.h index 3d0a76c078..027d3c7bbc 100644 --- a/src/widgets/accessible/simplewidgets_p.h +++ b/src/widgets/accessible/simplewidgets_p.h @@ -27,6 +27,7 @@ class QAbstractButton; class QLineEdit; class QToolButton; class QGroupBox; +class QMessageBox; class QProgressBar; #if QT_CONFIG(abstractbutton) @@ -189,6 +190,16 @@ private: QWindowContainer *container() const; }; +class QAccessibleMessageBox : public QAccessibleWidget +{ +public: + explicit QAccessibleMessageBox(QWidget *widget); + + QString text(QAccessible::Text t) const override; + + QMessageBox *messageBox() const; +}; + #endif // QT_CONFIG(accessibility) QT_END_NAMESPACE |