From 760ad40700ee5c6db969c376e053f9c4806e90a6 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Tue, 4 Feb 2014 15:47:48 +0100 Subject: Make QWindowContainer accessible Change-Id: I93451b8842648db0815c96d64d319daecb45f0de Reviewed-by: Gunnar Sletta --- src/plugins/accessible/widgets/main.cpp | 2 ++ src/plugins/accessible/widgets/simplewidgets.cpp | 35 +++++++++++++++++++++++- src/plugins/accessible/widgets/simplewidgets.h | 13 +++++++++ src/plugins/accessible/widgets/widgets.json | 3 +- 4 files changed, 51 insertions(+), 2 deletions(-) (limited to 'src/plugins/accessible') 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 #include #include +#include +#include #include #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(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" ] } -- cgit v1.2.3