Browse Source

fix: macOS Window Title And Accessibility Focus (#14472)

- Override accessibility method in atom_ns_window
- Add title attribute in accessibilityAttributeValue
Nitish Sakhawalkar 6 years ago
parent
commit
826af1d676
2 changed files with 15 additions and 0 deletions
  1. 2 0
      atom/browser/ui/cocoa/atom_ns_window.h
  2. 13 0
      atom/browser/ui/cocoa/atom_ns_window.mm

+ 2 - 0
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;

+ 13 - 0
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];