summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/render_widget_host_view_qt.cpp15
-rw-r--r--src/core/render_widget_host_view_qt.h3
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();