From 826af1d676f68c9fa871858c35339953099cda11 Mon Sep 17 00:00:00 2001 From: Nitish Sakhawalkar Date: Thu, 6 Sep 2018 16:47:31 -0700 Subject: [PATCH] fix: macOS Window Title And Accessibility Focus (#14472) - Override accessibility method in atom_ns_window - Add title attribute in accessibilityAttributeValue --- atom/browser/ui/cocoa/atom_ns_window.h | 2 ++ atom/browser/ui/cocoa/atom_ns_window.mm | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/atom/browser/ui/cocoa/atom_ns_window.h b/atom/browser/ui/cocoa/atom_ns_window.h index 7fd8f2a9a2a2..861916b1853a 100644 --- a/atom/browser/ui/cocoa/atom_ns_window.h +++ b/atom/browser/ui/cocoa/atom_ns_window.h @@ -7,6 +7,7 @@ #include "brightray/browser/mac/event_dispatching_window.h" #include "ui/views/cocoa/native_widget_mac_nswindow.h" +#include "ui/views/widget/native_widget_mac.h" namespace atom { @@ -40,6 +41,7 @@ class ScopedDisableResize { - (id)initWithShell:(atom::NativeWindowMac*)shell styleMask:(NSUInteger)styleMask; - (atom::NativeWindowMac*)shell; +- (id)accessibilityFocusedUIElement; - (NSRect)originalContentRectForFrameRect:(NSRect)frameRect; - (void)enableWindowButtonsOffset; - (void)toggleFullScreenMode:(id)sender; diff --git a/atom/browser/ui/cocoa/atom_ns_window.mm b/atom/browser/ui/cocoa/atom_ns_window.mm index aaaf933e1060..03ed762cf368 100644 --- a/atom/browser/ui/cocoa/atom_ns_window.mm +++ b/atom/browser/ui/cocoa/atom_ns_window.mm @@ -7,6 +7,8 @@ #include "atom/browser/native_window_mac.h" #include "atom/browser/ui/cocoa/atom_preview_item.h" #include "atom/browser/ui/cocoa/atom_touch_bar.h" +#include "atom/browser/ui/cocoa/root_view_mac.h" +#include "base/strings/sys_string_conversions.h" #include "ui/base/cocoa/window_size_constants.h" namespace atom { @@ -39,6 +41,13 @@ bool ScopedDisableResize::disable_resize_ = false; return shell_; } +- (id)accessibilityFocusedUIElement { + views::Widget* widget = shell_->widget(); + id superFocus = [super accessibilityFocusedUIElement]; + if (!widget || shell_->IsFocused()) + return superFocus; + return nil; +} - (NSRect)originalContentRectForFrameRect:(NSRect)frameRect { return [super contentRectForFrameRect:frameRect]; } @@ -91,6 +100,10 @@ bool ScopedDisableResize::disable_resize_ = false; } - (id)accessibilityAttributeValue:(NSString*)attribute { + if ([attribute isEqual:NSAccessibilityTitleAttribute]) + return base::SysUTF8ToNSString(shell_->GetTitle()); + if ([attribute isEqual:NSAccessibilityEnabledAttribute]) + return [NSNumber numberWithBool:YES]; if (![attribute isEqualToString:@"AXChildren"]) return [super accessibilityAttributeValue:attribute];