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:
hwaara%gmail.com
2006-12-06 13:35:56 +00:00
parent 600348d019
commit c5c5bee258
4 changed files with 80 additions and 10 deletions

View File

@@ -49,3 +49,6 @@
// returns one of the constants defined in CheckboxValue
- (int)isChecked;
@end
@interface mozPopupButtonAccessible : mozButtonAccessible
@end

View File

@@ -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

View File

@@ -120,6 +120,9 @@ nsAccessibleWrap::GetNativeType ()
case ROLE_AUTOCOMPLETE:
return [mozTextAccessible class];
case ROLE_COMBOBOX:
return [mozPopupButtonAccessible class];
default:
return [mozAccessible class];
}

View File

@@ -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