summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api/qwebengineview.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-07 10:45:41 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-10 15:56:48 +0200
commit6ac1bf6434f2a508b895f6da7997bd90a5a8c08a (patch)
tree8717c7c6e89c8a3de08b68899ed7a84782c3fb5d /src/webenginewidgets/api/qwebengineview.cpp
parenta9853701193c81c65f80a606943864cd9b1f4431 (diff)
Widget based accessibility glue code
With this patch the accessibility hierarchy inside webengine becomes available when navigating from QWidget based web views. Change-Id: Ib3625a6ec93b4d3f298fb845ab85209b348349ba Reviewed-by: Zeno Albisser <zeno.albisser@digia.com> Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'src/webenginewidgets/api/qwebengineview.cpp')
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 47afca8ce..71d854ac2 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -89,11 +89,20 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page)
}
}
+
+static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *object)
+{
+ if (QWebEngineView *v = qobject_cast<QWebEngineView*>(object))
+ return new QWebEngineViewAccessible(v);
+ return Q_NULLPTR;
+}
+
QWebEngineViewPrivate::QWebEngineViewPrivate()
: QWidgetPrivate(QObjectPrivateVersion)
, page(0)
, m_pendingContextMenuEvent(false)
{
+ QAccessible::installFactory(&webAccessibleFactory);
}
QWebEngineView::QWebEngineView(QWidget *parent)
@@ -242,6 +251,20 @@ void QWebEngineView::contextMenuEvent(QContextMenuEvent *event)
menu->popup(event->globalPos());
}
+int QWebEngineViewAccessible::childCount() const
+{
+ if (view() && child(0))
+ return 1;
+ return 0;
+}
+
+QAccessibleInterface *QWebEngineViewAccessible::child(int index) const
+{
+ if (index == 0 && view() && view()->page())
+ return view()->page()->d_func()->adapter->browserAccessible();
+ return Q_NULLPTR;
+}
+
QT_END_NAMESPACE
#include "moc_qwebengineview.cpp"