From 6ac1bf6434f2a508b895f6da7997bd90a5a8c08a Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 7 Jul 2014 10:45:41 +0200 Subject: 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 Reviewed-by: Andras Becsi --- src/webenginewidgets/api/qwebengineview.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/webenginewidgets/api/qwebengineview.cpp') 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(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" -- cgit v1.2.1