diff options
Diffstat (limited to 'src/plugins/accessible/widgets')
-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" ] } |