From 4ce840d8e6c155f1465c286c87ac6edd63b2eb6f Mon Sep 17 00:00:00 2001 From: Ryan Molden Date: Wed, 4 Nov 2015 11:42:35 -0800 Subject: [PATCH] Re-enable accessibility in Electron on Windows In conjunction with commit 7c41f0e. --- atom/browser/native_window_views_win.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/atom/browser/native_window_views_win.cc b/atom/browser/native_window_views_win.cc index d49683a..02ebd2e 100644 --- a/atom/browser/native_window_views_win.cc +++ b/atom/browser/native_window_views_win.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "atom/browser/native_window_views.h" +#include "content/public/browser/browser_accessibility_state.h" namespace atom { @@ -83,6 +84,20 @@ bool NativeWindowViews::PreHandleMSG( NotifyWindowMessage(message, w_param, l_param); switch (message) { + // Screen readers send WM_GETOBJECT in order to get the accessibility + // object, so take this opportunity to push Chromium into accessible + // mode if it isn't already, always say we didn't handle the message + // because we still want Chromium to handle returning the actual + // accessibility object. + case WM_GETOBJECT: { + const DWORD obj_id = static_cast(l_param); + if (obj_id == OBJID_CLIENT) { + const auto axState = content::BrowserAccessibilityState::GetInstance(); + if (axState && !axState->IsAccessibleBrowser()) + axState->OnScreenReaderDetected(); + } + return false; + } case WM_COMMAND: // Handle thumbar button click message. if (HIWORD(w_param) == THBN_CLICKED) -- 2.7.4