Bug 216731 [ATK Accessibility] register ROLE_LINK on runtime

r=kyle, sr=henry
for GTK2 only, not included in normal build
This commit is contained in:
simford.dong%sun.com 2003-09-02 09:47:14 +00:00
Родитель 6bb56de5b9
Коммит 86fd0c04f7
2 изменённых файлов: 13 добавлений и 4 удалений

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

@ -374,7 +374,7 @@ interface nsIAccessible : nsISupports
enum { ROLE_COLUMN = 66U }; // ATK_ROLE_UNKNOWN
enum { ROLE_ROW = 66U }; // ATK_ROLE_UNKNOWN
enum { ROLE_CELL = 55U }; // ATK_ROLE_TABLE_CELL
enum { ROLE_LINK = 66U }; // ATK_ROLE_UNKNOWN
enum { ROLE_LINK = 101U }; // ATK doesn't have such role now
enum { ROLE_HELPBALLOON = 66U }; // ATK_ROLE_UNKNOWN
// The object represents a cartoon-like graphic object
enum { ROLE_CHARACTER = 26U }; // ATK_ROLE_IMAGE

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

@ -667,12 +667,21 @@ getRoleCB(AtkObject *aAtkObj)
NS_ENSURE_SUCCESS(rv, ATK_ROLE_INVALID);
//the cross-platform Accessible object returns the same value for
//both "ATK_ROLE_MENU_ITEM" and "ATK_ROLE_MENU"
if (accRole == ATK_ROLE_MENU_ITEM) {
//both "ROLE_MENUITEM" and "ROLE_MENUPOPUP"
if (accRole == nsIAccessible::ROLE_MENUITEM) {
PRInt32 childCount = 0;
accWrap->GetChildCount(&childCount);
if (childCount > 0)
accRole = ATK_ROLE_MENU;
accRole = nsIAccessible::ROLE_MENUPOPUP;
}
else if (accRole == nsIAccessible::ROLE_LINK) {
//ATK doesn't have role-link now
//register it on runtime
static AtkRole linkRole = (AtkRole)0;
if (linkRole == 0) {
linkRole = atk_role_register("hyper link");
}
accRole = linkRole;
}
aAtkObj->role = NS_STATIC_CAST(AtkRole, accRole);
}