diff --git a/widget/src/gtk2/mai/nsMaiAppRoot.cpp b/widget/src/gtk2/mai/nsMaiAppRoot.cpp index aa7998a07d6c..1268b0945b95 100644 --- a/widget/src/gtk2/mai/nsMaiAppRoot.cpp +++ b/widget/src/gtk2/mai/nsMaiAppRoot.cpp @@ -217,17 +217,6 @@ MaiAppRoot::GetDescription(void) return atkObject->description; } -PRUint32 -MaiAppRoot::GetRole(void) -{ - AtkObject *atkObject = (AtkObject*)mMaiAtkObject; - - if (!atkObject->role) - atk_object_set_role(atkObject, ATK_ROLE_APPLICATION); - - return atkObject->role; -} - MaiObject * MaiAppRoot::GetParent(void) { diff --git a/widget/src/gtk2/mai/nsMaiAppRoot.h b/widget/src/gtk2/mai/nsMaiAppRoot.h index f8c353112bb0..562ede4e3512 100644 --- a/widget/src/gtk2/mai/nsMaiAppRoot.h +++ b/widget/src/gtk2/mai/nsMaiAppRoot.h @@ -77,7 +77,6 @@ public: virtual gchar *GetName(void); virtual gchar *GetDescription(void); - virtual PRUint32 GetRole(void); virtual MaiObject *GetParent(void); virtual gint GetChildCount(void); virtual MaiObject *RefChild(gint aChildIndex); diff --git a/widget/src/gtk2/mai/nsMaiObject.cpp b/widget/src/gtk2/mai/nsMaiObject.cpp index 3e30283f93a7..bea8107552ab 100644 --- a/widget/src/gtk2/mai/nsMaiObject.cpp +++ b/widget/src/gtk2/mai/nsMaiObject.cpp @@ -59,7 +59,6 @@ static void finalizeCB(GObject *aObj); /* callbacks for AtkObject virtual functions */ static const gchar* getNameCB (AtkObject *aObj); static const gchar* getDescriptionCB (AtkObject *aObj); -static AtkRole getRoleCB(AtkObject *aObj); static AtkObject* getParentCB(AtkObject *aObj); static gint getChildCountCB(AtkObject *aObj); static AtkObject* refChildCB(AtkObject *aObj, gint aChildIndex); @@ -173,7 +172,7 @@ MaiObject::GetNSAccessible(void) * GetName x * GetDescription x * GetParent x - * GetRole x + * GetRole * GetRelationSet * GetLayer */ @@ -234,24 +233,6 @@ MaiObject::GetDescription(void) return atkObject->description; } -PRUint32 -MaiObject::GetRole(void) -{ - g_return_val_if_fail(mAccessible != NULL, 0); - PRUint32 accRole; - nsresult rv = mAccessible->GetAccRole(&accRole); - - if (NS_FAILED(rv)) - return 0; - - //the cross-platform Accessible object return the same value for - //both "ATK_ROLE_MENU_ITEM" and "ATK_ROLE_MENU" - if ((accRole == ATK_ROLE_MENU_ITEM) && (GetChildCount())) - accRole = ATK_ROLE_MENU; - - return accRole; -} - gint MaiObject::GetChildCount(void) { @@ -312,7 +293,6 @@ classInitCB(AtkObjectClass *aClass) aClass->get_n_children = getChildCountCB; aClass->ref_child = refChildCB; aClass->get_index_in_parent = getIndexInParentCB; - aClass->get_role = getRoleCB; aClass->initialize = initializeCB; @@ -376,21 +356,6 @@ getDescriptionCB(AtkObject *aObj) return maiObject->GetDescription(); } -AtkRole -getRoleCB(AtkObject *aObj) -{ - MAI_CHECK_ATK_OBJECT_RETURN_VAL_IF_FAIL(aObj, ATK_ROLE_INVALID); - - if (aObj->role != ATK_ROLE_INVALID) - return aObj->role; - - MaiObject *maiObject = MAI_ATK_OBJECT(aObj)->maiObject; - AtkRole atkRole = NS_STATIC_CAST(AtkRole, maiObject->GetRole()); - aObj->role = atkRole; - - return atkRole; - } - AtkObject * getParentCB(AtkObject *aObj) { diff --git a/widget/src/gtk2/mai/nsMaiObject.h b/widget/src/gtk2/mai/nsMaiObject.h index 1e90b6570223..df344c1689f8 100644 --- a/widget/src/gtk2/mai/nsMaiObject.h +++ b/widget/src/gtk2/mai/nsMaiObject.h @@ -144,7 +144,6 @@ public: */ virtual gchar *GetName(void); virtual gchar *GetDescription(void); - virtual PRUint32 GetRole(void); virtual MaiObject *GetParent(void) = 0; virtual gint GetChildCount(void); virtual MaiObject *RefChild(gint aChildIndex); diff --git a/widget/src/gtk2/mai/nsMaiTopLevel.cpp b/widget/src/gtk2/mai/nsMaiTopLevel.cpp index f3e6864bad16..5ec67ce58d2d 100644 --- a/widget/src/gtk2/mai/nsMaiTopLevel.cpp +++ b/widget/src/gtk2/mai/nsMaiTopLevel.cpp @@ -143,17 +143,6 @@ MaiTopLevel::Create(nsIAccessible *aAcc) return maiTopLevel; } -PRUint32 -MaiTopLevel::GetRole(void) -{ - AtkObject *atkObject = (AtkObject*)mMaiAtkObject; - - if (!atkObject->role) - atk_object_set_role(atkObject, ATK_ROLE_FRAME); - - return atkObject->role; -} - ////////////////////////////////////////////////////////////////////// // See the comments in // MaiWidget::CreateAndCache(nsIAccessible *aAcc); diff --git a/widget/src/gtk2/mai/nsMaiTopLevel.h b/widget/src/gtk2/mai/nsMaiTopLevel.h index 4ba614533e58..f66de3de1175 100644 --- a/widget/src/gtk2/mai/nsMaiTopLevel.h +++ b/widget/src/gtk2/mai/nsMaiTopLevel.h @@ -59,8 +59,6 @@ public: virtual void Finalize(void); - virtual PRUint32 GetRole(void); - static MaiTopLevel * Create(nsIAccessible *aAcc); NS_DECL_ISUPPORTS diff --git a/widget/src/gtk2/mai/nsMaiWidget.cpp b/widget/src/gtk2/mai/nsMaiWidget.cpp index d25d719d48e5..d0c245a7f3e5 100644 --- a/widget/src/gtk2/mai/nsMaiWidget.cpp +++ b/widget/src/gtk2/mai/nsMaiWidget.cpp @@ -70,6 +70,7 @@ void finalizeCB(GObject *aObj); /* more callbacks for atkobject */ static AtkStateSet* refStateSetCB(AtkObject *aObj); +static AtkRole getRoleCB(AtkObject *aObj); G_END_DECLS @@ -513,6 +514,15 @@ MaiWidget::RefStateSet() return (NS_FAILED(rv)) ? 0 : accState; } +PRUint32 +MaiWidget::GetRole() +{ + g_return_val_if_fail(mAccessible != NULL, 0); + PRUint32 accRole; + nsresult rv = mAccessible->GetAccRole(&accRole); + return (NS_FAILED(rv)) ? 0 : accRole; +} + /* static functions */ gchar * @@ -561,6 +571,7 @@ classInitCB(AtkObjectClass *aClass) parent_class = g_type_class_peek_parent(aClass); aClass->ref_state_set = refStateSetCB; + aClass->get_role = getRoleCB; // aClass->initialize = initializeCB; @@ -627,3 +638,17 @@ refStateSetCB(AtkObject *aObj) return state_set; } +AtkRole +getRoleCB(AtkObject *aObj) +{ + MAI_ATK_WIDGET_RETURN_VAL_IF_FAIL(aObj, ATK_ROLE_INVALID); + + if (aObj->role != ATK_ROLE_INVALID) + return aObj->role; + MaiWidget *maiWidget = NS_STATIC_CAST(MaiWidget*, + MAI_ATK_OBJECT(aObj)->maiObject); + + AtkRole atkRole = NS_STATIC_CAST(AtkRole, maiWidget->GetRole()); + aObj->role = atkRole; + return atkRole; +} diff --git a/widget/src/gtk2/mai/nsMaiWidget.h b/widget/src/gtk2/mai/nsMaiWidget.h index 088381d38902..109d9aff9ba9 100644 --- a/widget/src/gtk2/mai/nsMaiWidget.h +++ b/widget/src/gtk2/mai/nsMaiWidget.h @@ -93,6 +93,7 @@ public: virtual guint GetNSAccessibleUniqueID(); MaiInterface *GetMaiInterface(MaiInterfaceType aInterfacefaceType); + AtkRole GetAtkRole(); static MaiWidget *CreateAndCache(nsIAccessible *aAcc); void ChildrenChange(AtkChildrenChange *event); public: @@ -106,6 +107,7 @@ public: virtual gint GetIndexInParent(); /* new ones */ virtual PRUint32 RefStateSet(); + virtual PRUint32 GetRole(); private: /* Interfaces */