diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-02-04 15:47:48 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-05 13:33:47 +0100 |
commit | 760ad40700ee5c6db969c376e053f9c4806e90a6 (patch) | |
tree | 4d27e74dde01466e6c9ede92d4fbd3309e2916bb /src/plugins/accessible | |
parent | bb9dd258434c7146843c0c84e625afcb8b0327f2 (diff) |
Make QWindowContainer accessible
Change-Id: I93451b8842648db0815c96d64d319daecb45f0de
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/plugins/accessible')
-rw-r--r-- | src/plugins/accessible/widgets/main.cpp | 2 | ||||
-rw-r--r-- | src/plugins/accessible/widgets/simplewidgets.cpp | 35 | ||||
-rw-r--r-- | src/plugins/accessible/widgets/simplewidgets.h | 13 | ||||
-rw-r--r-- | src/plugins/accessible/widgets/widgets.json | 3 |
4 files changed, 51 insertions, 2 deletions
diff --git a/src/plugins/accessible/widgets/main.cpp b/src/plugins/accessible/widgets/main.cpp index 36ee784aac..717c15edd1 100644 --- a/src/plugins/accessible/widgets/main.cpp +++ b/src/plugins/accessible/widgets/main.cpp @@ -247,6 +247,8 @@ QAccessibleInterface *AccessibleFactory::create(const QString &classname, QObjec iface = 0; } else if (classname == QLatin1String("QWidget")) { iface = new QAccessibleWidget(widget); + } else if (classname == QLatin1String("QWindowContainer")) { + iface = new QAccessibleWindowContainer(widget); } return iface; diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp index 1dac199a09..c275ec071d 100644 --- a/src/plugins/accessible/widgets/simplewidgets.cpp +++ b/src/plugins/accessible/widgets/simplewidgets.cpp @@ -57,6 +57,8 @@ #include <qstyle.h> #include <qstyleoption.h> #include <qtextdocument.h> +#include <qwindow.h> +#include <private/qwindowcontainer_p.h> #include <QtCore/qvarlengtharray.h> #ifdef Q_OS_MAC @@ -845,7 +847,38 @@ QProgressBar *QAccessibleProgressBar::progressBar() const } #endif + +QAccessibleWindowContainer::QAccessibleWindowContainer(QWidget *w) + : QAccessibleWidget(w) +{ +} + +int QAccessibleWindowContainer::childCount() const +{ + if (container()->containedWindow()) + return 1; + return 0; +} + +int QAccessibleWindowContainer::indexOfChild(const QAccessibleInterface *child) const +{ + if (child->object() == container()->containedWindow()) + return 0; + return -1; +} + +QAccessibleInterface *QAccessibleWindowContainer::child(int i) const +{ + if (i == 0) + return QAccessible::queryAccessibleInterface(container()->containedWindow()); + return 0; +} + +QWindowContainer *QAccessibleWindowContainer::container() const +{ + return static_cast<QWindowContainer *>(widget()); +} + #endif // QT_NO_ACCESSIBILITY QT_END_NAMESPACE - diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h index 6024788048..be19d8324f 100644 --- a/src/plugins/accessible/widgets/simplewidgets.h +++ b/src/plugins/accessible/widgets/simplewidgets.h @@ -195,6 +195,19 @@ protected: }; #endif +class QWindowContainer; +class QAccessibleWindowContainer : public QAccessibleWidget +{ +public: + QAccessibleWindowContainer(QWidget *w); + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int i) const Q_DECL_OVERRIDE; + +private: + QWindowContainer *container() const; +}; + #endif // QT_NO_ACCESSIBILITY QT_END_NAMESPACE diff --git a/src/plugins/accessible/widgets/widgets.json b/src/plugins/accessible/widgets/widgets.json index 3969fcd527..9ebcc89d35 100644 --- a/src/plugins/accessible/widgets/widgets.json +++ b/src/plugins/accessible/widgets/widgets.json @@ -48,6 +48,7 @@ "QScrollArea", "QCalendarWidget", "QDockWidget", - "QDesktopScreenWidget" + "QDesktopScreenWidget", + "QWindowContainer" ] } |