Initial support for popupmenus, r=surkov, b=362080
git-svn-id: svn://10.0.0.236/trunk@216557 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -49,3 +49,6 @@
|
||||
// returns one of the constants defined in CheckboxValue
|
||||
- (int)isChecked;
|
||||
@end
|
||||
|
||||
@interface mozPopupButtonAccessible : mozButtonAccessible
|
||||
@end
|
||||
|
||||
@@ -72,6 +72,13 @@ enum CheckboxValue {
|
||||
return attributes;
|
||||
}
|
||||
|
||||
- (id)accessibilityAttributeValue:(NSString *)attribute
|
||||
{
|
||||
if ([attribute isEqualToString:NSAccessibilityChildrenAttribute])
|
||||
return nil;
|
||||
return [super accessibilityAttributeValue:attribute];
|
||||
}
|
||||
|
||||
- (BOOL)accessibilityIsIgnored
|
||||
{
|
||||
return mIsExpired;
|
||||
@@ -106,11 +113,6 @@ enum CheckboxValue {
|
||||
mGeckoAccessible->DoAction(0);
|
||||
}
|
||||
|
||||
- (NSArray*)children
|
||||
{
|
||||
return [NSArray array];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation mozCheckboxAccessible
|
||||
@@ -146,3 +148,65 @@ enum CheckboxValue {
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation mozPopupButtonAccessible
|
||||
|
||||
- (NSArray *)accessibilityAttributeNames
|
||||
{
|
||||
static NSArray *attributes = nil;
|
||||
|
||||
if (!attributes) {
|
||||
attributes = [[NSArray alloc] initWithObjects:NSAccessibilityParentAttribute, // required
|
||||
NSAccessibilityPositionAttribute, // required
|
||||
NSAccessibilityRoleAttribute, // required
|
||||
NSAccessibilitySizeAttribute, // required
|
||||
NSAccessibilityWindowAttribute, // required
|
||||
kTopLevelUIElementAttribute, // required
|
||||
NSAccessibilityHelpAttribute,
|
||||
NSAccessibilityEnabledAttribute, // required
|
||||
NSAccessibilityFocusedAttribute, // required
|
||||
NSAccessibilityTitleAttribute, // required for popupmenus, and for menubuttons with a title
|
||||
NSAccessibilityChildrenAttribute, // required
|
||||
kInstanceDescriptionAttribute, // required if it has no title attr
|
||||
nil];
|
||||
}
|
||||
return attributes;
|
||||
}
|
||||
|
||||
- (id)accessibilityAttributeValue:(NSString *)attribute
|
||||
{
|
||||
if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
|
||||
return [super children];
|
||||
}
|
||||
return [super accessibilityAttributeValue:attribute];
|
||||
}
|
||||
|
||||
- (NSArray *)accessibilityActionNames
|
||||
{
|
||||
if ([self isEnabled]) {
|
||||
return [NSArray arrayWithObjects:NSAccessibilityPressAction,
|
||||
NSAccessibilityShowMenuAction,
|
||||
nil];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString *)accessibilityActionDescription:(NSString *)action
|
||||
{
|
||||
if ([action isEqualToString:NSAccessibilityShowMenuAction])
|
||||
return @"show menu";
|
||||
return [super accessibilityActionDescription:action];
|
||||
}
|
||||
|
||||
- (void)accessibilityPerformAction:(NSString *)action
|
||||
{
|
||||
// both the ShowMenu and Click action do the same thing.
|
||||
if ([self isEnabled]) {
|
||||
// TODO: this should bring up the menu, but currently doesn't.
|
||||
// once msaa and atk have merged better, they will implement
|
||||
// the action needed to show the menu.
|
||||
[super click];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -120,6 +120,9 @@ nsAccessibleWrap::GetNativeType ()
|
||||
case ROLE_AUTOCOMPLETE:
|
||||
return [mozTextAccessible class];
|
||||
|
||||
case ROLE_COMBOBOX:
|
||||
return [mozPopupButtonAccessible class];
|
||||
|
||||
default:
|
||||
return [mozAccessible class];
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ static const NSString* AXRoles [] = {
|
||||
NSAccessibilityWindowRole, // ROLE_ALERT
|
||||
NSAccessibilityWindowRole, // ROLE_WINDOW. irrelevant on OS X; all window a11y is handled by the system.
|
||||
@"AXWebArea", // ROLE_CLIENT
|
||||
NSAccessibilityPopUpButtonRole, // ROLE_MENUPOPUP
|
||||
NSAccessibilityMenuRole, // ROLE_MENUPOPUP. the parent of menuitems
|
||||
NSAccessibilityMenuItemRole, // ROLE_MENUITEM.
|
||||
@"AXHelpTag", // ROLE_TOOLTIP. 10.4+ only, so we re-define the constant.
|
||||
NSAccessibilityGroupRole, // ROLE_APPLICATION. unused on OS X. the system will take care of this.
|
||||
@@ -88,8 +88,8 @@ static const NSString* AXRoles [] = {
|
||||
NSAccessibilityButtonRole, // ROLE_PUSHBUTTON
|
||||
NSAccessibilityCheckBoxRole, // ROLE_CHECKBUTTON
|
||||
NSAccessibilityRadioButtonRole, // ROLE_RADIOBUTTON
|
||||
NSAccessibilityComboBoxRole, // ROLE_COMBOBOX
|
||||
NSAccessibilityComboBoxRole, // ROLE_DROPLIST
|
||||
NSAccessibilityPopUpButtonRole, // ROLE_COMBOBOX
|
||||
NSAccessibilityPopUpButtonRole, // ROLE_DROPLIST.
|
||||
NSAccessibilityProgressIndicatorRole, // ROLE_PROGRESSBAR
|
||||
NSAccessibilityUnknownRole, // ROLE_DIAL
|
||||
NSAccessibilityUnknownRole, // ROLE_HOTKEYFIELD
|
||||
@@ -98,7 +98,7 @@ static const NSString* AXRoles [] = {
|
||||
NSAccessibilityUnknownRole, // ROLE_DIAGRAM
|
||||
NSAccessibilityUnknownRole, // ROLE_ANIMATION
|
||||
NSAccessibilityUnknownRole, // ROLE_EQUATION
|
||||
NSAccessibilityPopUpButtonRole, // ROLE_BUTTONDROPDOWN
|
||||
NSAccessibilityPopUpButtonRole, // ROLE_BUTTONDROPDOWN.
|
||||
NSAccessibilityMenuButtonRole, // ROLE_BUTTONMENU
|
||||
NSAccessibilityGroupRole, // ROLE_BUTTONDROPDOWNGRID
|
||||
NSAccessibilityUnknownRole, // ROLE_WHITESPACE
|
||||
@@ -125,7 +125,7 @@ static const NSString* AXRoles [] = {
|
||||
NSAccessibilityGroupRole, // ROLE_LAYERED_PANE
|
||||
NSAccessibilityGroupRole, // ROLE_OPTION_PANE
|
||||
NSAccessibilityTextFieldRole, // ROLE_PASSWORD_TEXT
|
||||
NSAccessibilityPopUpButtonRole, // ROLE_POPUP_MENU
|
||||
NSAccessibilityUnknownRole, // ROLE_POPUP_MENU. unused
|
||||
NSAccessibilityMenuItemRole, // ROLE_RADIO_MENU_ITEM
|
||||
NSAccessibilityGroupRole, // ROLE_ROOT_PANE
|
||||
NSAccessibilityScrollAreaRole, // ROLE_SCROLL_PANE
|
||||
|
||||
Reference in New Issue
Block a user