Bug 390129. ARIA combo box improvements. r=surkov, a=dsicore

This commit is contained in:
aaronleventhal@moonset.net 2007-08-03 19:00:05 -07:00
Родитель 148a241c2f
Коммит 3e70f3b459
2 изменённых файлов: 13 добавлений и 5 удалений

Просмотреть файл

@ -81,11 +81,10 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
{"selected", kBoolState, nsIAccessibleStates::STATE_SELECTED | nsIAccessibleStates::STATE_SELECTABLE},
{"selected", "false", nsIAccessibleStates::STATE_SELECTABLE},
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
{"combobox", nsIAccessibleRole::ROLE_COMBOBOX, eNameLabelOrTitle, eNoValue, kNoReqStates,
{"combobox", nsIAccessibleRole::ROLE_COMBOBOX, eNameLabelOrTitle, eHasValueMinMax, nsIAccessibleStates::STATE_COLLAPSED,
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY},
{"expanded", kBoolState, nsIAccessibleStates::STATE_EXPANDED},
{"multiselectable", kBoolState, nsIAccessibleStates::STATE_MULTISELECTABLE | nsIAccessibleStates::STATE_EXTSELECTABLE}, kEndEntry},
{"expanded", kBoolState, nsIAccessibleStates::STATE_EXPANDED}, kEndEntry},
{"description", nsIAccessibleRole::ROLE_TEXT_CONTAINER, eNameOkFromChildren, eNoValue, kNoReqStates, kEndEntry},
{"dialog", nsIAccessibleRole::ROLE_DIALOG, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
{"document", nsIAccessibleRole::ROLE_DOCUMENT, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},

Просмотреть файл

@ -2290,9 +2290,18 @@ nsAccessible::GetFinalState(PRUint32 *aState, PRUint32 *aExtraState)
nsIAccessibleStates::EXT_STATE_SENSITIVE;
}
if (*aState & (nsIAccessibleStates::STATE_COLLAPSED |
nsIAccessibleStates::STATE_EXPANDED)) {
const PRUint32 kExpandCollapseStates =
nsIAccessibleStates::STATE_COLLAPSED | nsIAccessibleStates::STATE_EXPANDED;
if (*aState & kExpandCollapseStates) {
*aExtraState |= nsIAccessibleStates::EXT_STATE_EXPANDABLE;
if ((*aState & kExpandCollapseStates) == kExpandCollapseStates) {
// Cannot be both expanded and collapsed -- this happens
// in ARIA expanded combobox because of limitation of nsARIAMap
// XXX Perhaps we will be able to make this less hacky if
// we support extended states in nsARIAMap, e.g. derive
// COLLAPSED from EXPANDABLE && !EXPANDED
*aExtraState &= ~nsIAccessibleStates::STATE_COLLAPSED;
}
}
}