JNIEXPORT void JNICALL ATK_NATIVE(_1atk_1relation_1set_1remove) (JNIEnv *env, jclass that, jint arg0, jint arg1) { ATK_NATIVE_ENTER(env, that, _1atk_1relation_1set_1remove_FUNC); atk_relation_set_remove((AtkRelationSet *)arg0, (AtkRelation *)arg1); ATK_NATIVE_EXIT(env, that, _1atk_1relation_1set_1remove_FUNC); }
AtkRelationSet * refRelationSetCB(AtkObject *aAtkObj) { AtkRelationSet *relation_set = nsnull; relation_set = ATK_OBJECT_CLASS(parent_class)->ref_relation_set(aAtkObj); nsAccessibleWrap *accWrap = GetAccessibleWrap(aAtkObj); if (!accWrap) { return relation_set; } AtkRelation* relation; PRUint32 relationType[] = {nsIAccessibleRelation::RELATION_LABELLED_BY, nsIAccessibleRelation::RELATION_LABEL_FOR, nsIAccessibleRelation::RELATION_NODE_CHILD_OF, nsIAccessibleRelation::RELATION_CONTROLLED_BY, nsIAccessibleRelation::RELATION_CONTROLLER_FOR, nsIAccessibleRelation::RELATION_EMBEDS, nsIAccessibleRelation::RELATION_FLOWS_TO, nsIAccessibleRelation::RELATION_FLOWS_FROM, nsIAccessibleRelation::RELATION_DESCRIBED_BY, nsIAccessibleRelation::RELATION_DESCRIPTION_FOR, }; for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(relationType); i++) { relation = atk_relation_set_get_relation_by_type(relation_set, static_cast<AtkRelationType>(relationType[i])); if (relation) { atk_relation_set_remove(relation_set, relation); } nsCOMPtr<nsIAccessibleRelation> geckoRelation; nsresult rv = accWrap->GetRelationByType(relationType[i], getter_AddRefs(geckoRelation)); if (NS_SUCCEEDED(rv) && geckoRelation) { PRUint32 targetsCount = 0; geckoRelation->GetTargetsCount(&targetsCount); if (targetsCount) { AtkObject** accessible_array = new AtkObject*[targetsCount]; for (PRUint32 index = 0; index < targetsCount; index++) { nsCOMPtr<nsIAccessible> geckoTarget; geckoRelation->GetTarget(index, getter_AddRefs(geckoTarget)); accessible_array[index] = nsAccessibleWrap::GetAtkObject(geckoTarget); } relation = atk_relation_new(accessible_array, targetsCount, static_cast<AtkRelationType>(relationType[i])); atk_relation_set_add(relation_set, relation); g_object_unref(relation); delete [] accessible_array; } } } return relation_set; }
static AtkRelationSet* gail_window_ref_relation_set (AtkObject *obj) { GtkWidget *widget; AtkRelationSet *relation_set; AtkObject *array[1]; AtkRelation* relation; GtkWidget *current_widget; gail_return_val_if_fail (GAIL_IS_WIDGET (obj), NULL); widget = GTK_ACCESSIBLE (obj)->widget; if (widget == NULL) /* * State is defunct */ return NULL; relation_set = ATK_OBJECT_CLASS (gail_window_parent_class)->ref_relation_set (obj); if (atk_object_get_role (obj) == ATK_ROLE_TOOL_TIP) { relation = atk_relation_set_get_relation_by_type (relation_set, ATK_RELATION_POPUP_FOR); if (relation) { atk_relation_set_remove (relation_set, relation); } if (gtk_widget_get_visible(widget) && gtk_tooltips_get_info_from_tip_window (GTK_WINDOW (widget), NULL, ¤t_widget)) { array [0] = gtk_widget_get_accessible (current_widget); relation = atk_relation_new (array, 1, ATK_RELATION_POPUP_FOR); atk_relation_set_add (relation_set, relation); g_object_unref (relation); } } return relation_set; }