diff options
Diffstat (limited to 'chrome/browser/cocoa/tab_view.mm')
-rw-r--r-- | chrome/browser/cocoa/tab_view.mm | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/tab_view.mm b/chrome/browser/cocoa/tab_view.mm index 3432908..0ad8c8c 100644 --- a/chrome/browser/cocoa/tab_view.mm +++ b/chrome/browser/cocoa/tab_view.mm @@ -804,10 +804,48 @@ const CGFloat kRapidCloseDist = 2.5; return [parentActions arrayByAddingObject:NSAccessibilityPressAction]; } +- (NSArray*)accessibilityAttributeNames { + NSMutableArray* attributes = + [[super accessibilityAttributeNames] mutableCopy]; + [attributes addObject:NSAccessibilityTitleAttribute]; + [attributes addObject:NSAccessibilityEnabledAttribute]; + + return attributes; +} + +- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute { + if ([attribute isEqual:NSAccessibilityTitleAttribute]) + return NO; + + if ([attribute isEqual:NSAccessibilityEnabledAttribute]) + return NO; + + return [super accessibilityIsAttributeSettable:attribute]; +} + - (id)accessibilityAttributeValue:(NSString*)attribute { if ([attribute isEqual:NSAccessibilityRoleAttribute]) return NSAccessibilityButtonRole; + if ([attribute isEqual:NSAccessibilityTitleAttribute]) + return [controller_ title]; + + if ([attribute isEqual:NSAccessibilityEnabledAttribute]) + return [NSNumber numberWithBool:YES]; + + if ([attribute isEqual:NSAccessibilityChildrenAttribute]) { + // The subviews (icon and text) are clutter; filter out everything but + // useful controls. + NSArray* children = [super accessibilityAttributeValue:attribute]; + NSMutableArray* okChildren = [NSMutableArray array]; + for (id child in children) { + if ([child isKindOfClass:[NSButtonCell class]]) + [okChildren addObject:child]; + } + + return okChildren; + } + return [super accessibilityAttributeValue:attribute]; } |