Bug 235687 ATK menu hierarchy is missing most menu items

r=louie.zhao, sr=henry.jia
set menugenerated="true" when look up the child of a xul menu item
This commit is contained in:
kyle.yuan%sun.com 2004-03-08 08:08:20 +00:00
Родитель 88872cd839
Коммит 92704cd2e5
1 изменённых файлов: 28 добавлений и 0 удалений

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

@ -179,6 +179,34 @@ NS_IMETHODIMP nsXULMenuitemAccessible::GetRole(PRUint32 *_retval)
NS_IMETHODIMP nsXULMenuitemAccessible::GetChildCount(PRInt32 *aAccChildCount)
{
// Set menugenerated="true" on the menupopup node to generate the
// sub-menu items if they have not been generated
PRUint32 childIndex, numChildren = 0;
nsCOMPtr<nsIDOMNode> childNode;
nsCOMPtr<nsIDOMNodeList> nodeList;
mDOMNode->GetChildNodes(getter_AddRefs(nodeList));
if (nodeList && NS_OK == nodeList->GetLength(&numChildren)) {
for (childIndex = 0; childIndex < numChildren; childIndex++) {
nodeList->Item(childIndex, getter_AddRefs(childNode));
nsAutoString nodeName;
childNode->GetNodeName(nodeName);
if (nodeName.Equals(NS_LITERAL_STRING("menupopup"))) {
break;
}
}
if (childIndex < numChildren) {
nsCOMPtr<nsIDOMElement> element(do_QueryInterface(childNode));
if (element) {
nsAutoString attr;
element->GetAttribute(NS_LITERAL_STRING("menugenerated"), attr);
if (!attr.Equals(NS_LITERAL_STRING("true"))) {
element->SetAttribute(NS_LITERAL_STRING("menugenerated"), NS_LITERAL_STRING("true"));
}
}
}
}
// Argument of PR_FALSE indicates we don't walk anonymous children for menuitems
CacheChildren(PR_FALSE);
*aAccChildCount = mAccChildCount;