diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-08-04 19:05:04 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-09-01 11:14:41 +0200 |
commit | 41efc54901905167d312e5a1974215efd592fee1 (patch) | |
tree | 917822c0bf6f4c1535f11042fe649371030279d7 /src/core | |
parent | f677f0a41bca3439b9496e7b900d6638c5d84d6e (diff) |
React to Accessibility being enabled/disabled globally
Change-Id: I57a85682d132bfefcdb0e3d1b3065f0474317e32
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/render_widget_host_view_qt.cpp | 15 | ||||
-rw-r--r-- | src/core/render_widget_host_view_qt.h | 3 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index ee099170a..08e7ca783 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -179,10 +179,15 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget , m_initPending(false) { m_host->SetView(this); + + QAccessible::installActivationObserver(this); + if (QAccessible::isActive()) + content::BrowserAccessibilityStateImpl::GetInstance()->EnableAccessibility(); } RenderWidgetHostViewQt::~RenderWidgetHostViewQt() { + QAccessible::removeActivationObserver(this); } void RenderWidgetHostViewQt::setDelegate(RenderWidgetHostViewQtDelegate* delegate) @@ -908,6 +913,14 @@ void RenderWidgetHostViewQt::AccessibilityFatalError() SetBrowserAccessibilityManager(NULL); } +void RenderWidgetHostViewQt::accessibilityActiveChanged(bool active) +{ + if (active) + content::BrowserAccessibilityStateImpl::GetInstance()->EnableAccessibility(); + else + content::BrowserAccessibilityStateImpl::GetInstance()->DisableAccessibility(); +} + void RenderWidgetHostViewQt::handleWheelEvent(QWheelEvent *ev) { m_host->ForwardWheelEvent(WebEventFactory::toWebWheelEvent(ev, dpiScale())); @@ -988,8 +1001,6 @@ QAccessibleInterface *RenderWidgetHostViewQt::GetQtAccessible() // Assume we have a screen reader doing stuff CreateBrowserAccessibilityManagerIfNeeded(); content::BrowserAccessibilityState::GetInstance()->OnScreenReaderDetected(); - content::BrowserAccessibilityStateImpl::GetInstance()->EnableAccessibility(); - content::BrowserAccessibility *acc = GetBrowserAccessibilityManager()->GetRoot(); content::BrowserAccessibilityQt *accQt = static_cast<content::BrowserAccessibilityQt*>(acc); return accQt; diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index db9a0e687..855a85fff 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -48,6 +48,7 @@ #include <QPoint> #include <QRect> #include <QtGlobal> +#include <QtGui/qaccessible.h> #include "delegated_frame_node.h" @@ -91,6 +92,7 @@ class RenderWidgetHostViewQt , public RenderWidgetHostViewQtDelegateClient , public content::BrowserAccessibilityDelegate , public base::SupportsWeakPtr<RenderWidgetHostViewQt> + , public QAccessible::ActivationObserver { public: RenderWidgetHostViewQt(content::RenderWidgetHost* widget); @@ -209,6 +211,7 @@ public: virtual gfx::Point AccessibilityOriginInScreen(const gfx::Rect& bounds) const Q_DECL_OVERRIDE { return gfx::Point(); } virtual void AccessibilityHitTest(const gfx::Point& point) Q_DECL_OVERRIDE { } virtual void AccessibilityFatalError() Q_DECL_OVERRIDE; + virtual void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE; QAccessibleInterface *GetQtAccessible(); |