summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-02-04 15:47:48 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-05 13:33:47 +0100
commit760ad40700ee5c6db969c376e053f9c4806e90a6 (patch)
tree4d27e74dde01466e6c9ede92d4fbd3309e2916bb
parentbb9dd258434c7146843c0c84e625afcb8b0327f2 (diff)
Make QWindowContainer accessible
Change-Id: I93451b8842648db0815c96d64d319daecb45f0de Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
-rw-r--r--src/plugins/accessible/widgets/main.cpp2
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp35
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h13
-rw-r--r--src/plugins/accessible/widgets/widgets.json3
-rw-r--r--src/widgets/kernel/qwindowcontainer.cpp6
-rw-r--r--src/widgets/kernel/qwindowcontainer_p.h3
6 files changed, 58 insertions, 4 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"
]
}
diff --git a/src/widgets/kernel/qwindowcontainer.cpp b/src/widgets/kernel/qwindowcontainer.cpp
index 399f089e0f..a4b3caf78d 100644
--- a/src/widgets/kernel/qwindowcontainer.cpp
+++ b/src/widgets/kernel/qwindowcontainer.cpp
@@ -200,7 +200,11 @@ QWindowContainer::QWindowContainer(QWindow *embeddedWindow, QWidget *parent, Qt:
connect(QGuiApplication::instance(), SIGNAL(focusWindowChanged(QWindow *)), this, SLOT(focusWindowChanged(QWindow *)));
}
-
+QWindow *QWindowContainer::containedWindow() const
+{
+ Q_D(const QWindowContainer);
+ return d->window;
+}
/*!
\internal
diff --git a/src/widgets/kernel/qwindowcontainer_p.h b/src/widgets/kernel/qwindowcontainer_p.h
index a21f9bd35a..014b163f97 100644
--- a/src/widgets/kernel/qwindowcontainer_p.h
+++ b/src/widgets/kernel/qwindowcontainer_p.h
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
class QWindowContainerPrivate;
-class QWindowContainer : public QWidget
+class Q_WIDGETS_EXPORT QWindowContainer : public QWidget
{
Q_OBJECT
Q_DECLARE_PRIVATE(QWindowContainer)
@@ -56,6 +56,7 @@ class QWindowContainer : public QWidget
public:
explicit QWindowContainer(QWindow *embeddedWindow, QWidget *parent = 0, Qt::WindowFlags f = 0);
~QWindowContainer();
+ QWindow *containedWindow() const;
static void toplevelAboutToBeDestroyed(QWidget *parent);
static void parentWasChanged(QWidget *parent);