2 #include "elementary_config.h"
5 #define EFL_ACCESS_OBJECT_PROTECTED
9 //TIZEN_ONLY(20181211): Fix for missing unregistration of atspi objects
10 void unregister_atspi_object_in_bridge(const Eo *obj);
13 const char* Access_Name[] = {
71 "table column header",
103 "input method window",
106 "document spreadsheet",
107 "document presentation",
120 struct _Efl_Access_Event_Handler
126 //TIZEN_ONLY(20190922): add name callback, description callback.
127 struct _Efl_Access_Reading_Info_Cb_Item
129 Efl_Access_Reading_Info_Cb cb;
132 typedef struct _Efl_Access_Reading_Info_Cb_Item Efl_Access_Reading_Info_Cb_Item;
135 //TIZEN_ONLY(20170405) Add gesture method to accessible interface
136 struct _Efl_Access_Gesture_Cb_Item
138 Efl_Access_Gesture_Cb cb;
141 typedef struct _Efl_Access_Gesture_Cb_Item Efl_Access_Gesture_Cb_Item;
143 struct _Elm_Atspi_Gesture_Cb_Item
145 Elm_Atspi_Gesture_Cb cb;
148 typedef struct _Elm_Atspi_Gesture_Cb_Item Elm_Atspi_Gesture_Cb_Item;
151 struct _Efl_Access_Object_Data
153 Efl_Access_Relation_Set relations;
154 //TIZEN_ONLY(20190922): add name callback, description callback.
155 Efl_Access_Reading_Info_Cb_Item name_cb_item;
156 Efl_Access_Reading_Info_Cb_Item description_cb_item;
158 //TIZEN_ONLY(20170405) Add gesture method to accessible interface
159 Efl_Access_Gesture_Cb_Item gesture_cb_item;
160 Elm_Atspi_Gesture_Cb_Item legacy_gesture_cb_item;
162 Eina_List *attr_list;
164 const char *description;
165 const char *translation_domain;
166 Efl_Access_Role role;
167 Efl_Access_Reading_Info_Type_Mask reading_info;
169 //TIZEN_ONLY(20181024): Fix parent-children incosistencies in atspi tree
174 typedef struct _Efl_Access_Object_Data Efl_Access_Object_Data;
177 static Eina_List *global_callbacks;
181 _efl_access_object_index_in_parent_get(const Eo *obj, Efl_Access_Object_Data *pd EINA_UNUSED)
183 Eina_List *l, *children = NULL;
187 //TIZEN_ONLY(20181024): Fix parent-children incosistencies in atspi tree
188 Eo *parent = efl_access_object_access_parent_get(obj);
190 if (!parent) return -1;
192 children = efl_access_object_access_children_get(parent);
193 if (!children) return -1;
195 EINA_LIST_FOREACH(children, l, chld)
201 if (ret == (int)eina_list_count(children))
203 ERR("Object %s not present in its AT-SPI parents (%s) children list! This should never happen.", efl_class_name_get(efl_class_get(obj)), efl_class_name_get(efl_class_get(parent)));
206 eina_list_free(children);
210 //TIZEN_ONLY(20181024): Fix parent-children incosistencies in atspi tree
212 _efl_access_object_access_parent_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd EINA_UNUSED)
218 _efl_access_object_access_parent_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd EINA_UNUSED, Eo *parent)
225 _efl_access_object_attributes_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd)
227 Eina_List *attr_list = NULL;
231 Efl_Access_Attribute *t_attr = NULL;
232 EINA_LIST_FOREACH(pd->attr_list, l, t_attr)
234 Efl_Access_Attribute *attr = calloc(1, sizeof(Efl_Access_Attribute));
238 attr->key = eina_stringshare_add(t_attr->key);
239 attr->value = eina_stringshare_add(t_attr->value);
240 attr_list = eina_list_append(attr_list, attr);
247 _efl_access_object_attribute_append(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, const char *key, const char *value)
250 Efl_Access_Attribute *attr = NULL;
252 if (!key || !value) return;
254 /* Check existing attributes has this key */
255 EINA_LIST_FOREACH(pd->attr_list, l, attr)
257 if (!strcmp((const char *)attr->key, key))
259 eina_stringshare_replace(&attr->value, value);
264 /* Add new attribute */
265 attr = calloc(1, sizeof(Efl_Access_Attribute));
268 attr->key = eina_stringshare_add(key);
269 attr->value = eina_stringshare_add(value);
270 pd->attr_list = eina_list_append(pd->attr_list, attr);
274 _efl_access_object_attribute_del(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, const char *key)
277 Efl_Access_Attribute *attr = NULL;
280 if (!pd->attr_list) return;
282 /* Check whether existing attribute list has this key and delete */
283 EINA_LIST_FOREACH(pd->attr_list, l, attr)
285 if (!strcmp((const char *)attr->key, key))
287 pd->attr_list = eina_list_remove_list(pd->attr_list, l);
288 eina_stringshare_del(attr->key);
289 eina_stringshare_del(attr->value);
296 EOLIAN static void _efl_access_object_attributes_clear(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd)
298 if (!pd->attr_list) return;
299 Efl_Access_Attribute *attr;
300 EINA_LIST_FREE(pd->attr_list, attr)
302 eina_stringshare_del(attr->key);
303 eina_stringshare_del(attr->value);
306 pd->attr_list = NULL;
310 _efl_access_object_reading_info_type_set(Eo *obj, Efl_Access_Object_Data *pd, Efl_Access_Reading_Info_Type reading_info)
312 Eina_Strbuf *buf = NULL;
313 if (reading_info == pd->reading_info)
315 pd->reading_info = reading_info;
316 if (!pd->reading_info)
318 efl_access_object_attribute_del(obj, "reading_info_type");
321 buf = eina_strbuf_new();
322 eina_strbuf_reset(buf);
323 if (reading_info & (EFL_ACCESS_READING_INFO_TYPE_NAME))
325 eina_strbuf_append(buf, "name");
326 eina_strbuf_append_char(buf, '|');
328 if (reading_info & (EFL_ACCESS_READING_INFO_TYPE_ROLE))
330 eina_strbuf_append(buf, "role");
331 eina_strbuf_append_char(buf, '|');
333 if (reading_info & (EFL_ACCESS_READING_INFO_TYPE_DESCRIPTION))
335 eina_strbuf_append(buf, "description");
336 eina_strbuf_append_char(buf, '|');
338 if (reading_info & (EFL_ACCESS_READING_INFO_TYPE_STATE))
340 eina_strbuf_append(buf, "state");
342 efl_access_object_attribute_append(obj, "reading_info_type", eina_strbuf_string_get(buf));
343 eina_strbuf_free(buf);
346 EOLIAN Efl_Access_Reading_Info_Type_Mask
347 _efl_access_object_reading_info_type_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd)
349 return pd->reading_info;
352 EOLIAN static Efl_Access_Role
353 _efl_access_object_role_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd)
359 //TIZEN_ONLY(20200220): add EINA_UNUSED for unused parameters
360 _efl_access_object_role_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, Efl_Access_Role role)
361 //_efl_access_object_role_set(Eo *obj, Efl_Access_Object_Data *pd, Efl_Access_Role role)
364 if (pd->role != role)
367 //TIZEN_ONLY(20160708) Do not send role changed signal - 10000 list items send 10000 IPC.
368 //efl_access_role_changed_signal_emit(obj);
374 _efl_access_object_role_name_get(const Eo *obj, Efl_Access_Object_Data *pd EINA_UNUSED)
376 Efl_Access_Role role;
378 role = efl_access_object_role_get(obj);
380 return role > EFL_ACCESS_ROLE_LAST_DEFINED ? "" : Access_Name[role];
384 _efl_access_object_i18n_name_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd)
386 //TIZEN_ONLY(20190922): add name callback, description callback.
388 if (pd->name_cb_item.cb)
389 ret = pd->name_cb_item.cb((void *)pd->name_cb_item.data, (Eo *)obj);
392 //TIZEN_ONLY(20220826): Remove markup from accessible name
395 text = _elm_util_mkup_to_text(ret);
396 eina_stringshare_replace(&pd->translation_domain, NULL);
397 pd->translation_domain = NULL;
398 eina_stringshare_replace(&pd->name, text);
405 if (pd->translation_domain)
406 return dgettext(pd->translation_domain, pd->name);
412 _efl_access_object_i18n_name_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, const char *val)
414 //TIZEN_ONLY(20220826): Remove markup from accessible name
417 text = _elm_util_mkup_to_text(val); // NULL is OK
418 eina_stringshare_replace(&pd->name, text);
423 //TIZEN_ONLY(20190922): add name callback, description callback.
425 _efl_access_object_name_cb_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, Efl_Access_Reading_Info_Cb name_cb, const void *data)
427 pd->name_cb_item.cb = name_cb;
428 pd->name_cb_item.data = data;
432 const char * _efl_access_object_description_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd)
434 //TIZEN_ONLY(20190922): add name callback, description callback.
436 if (pd->description_cb_item.cb)
437 ret = pd->description_cb_item.cb((void *)pd->description_cb_item.data, (Eo *)obj);
440 eina_stringshare_replace(&pd->translation_domain, NULL);
441 pd->translation_domain = NULL;
442 eina_stringshare_replace(&pd->description, ret);
447 if (pd->translation_domain)
448 return dgettext(pd->translation_domain, pd->description);
450 return pd->description;
454 _efl_access_object_description_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, const char *val)
456 eina_stringshare_replace(&pd->description, val);
459 //TIZEN_ONLY(20190922): add name callback, description callback.
461 _efl_access_object_description_cb_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, Efl_Access_Reading_Info_Cb description_cb, const void *data)
463 pd->description_cb_item.cb = description_cb;
464 pd->description_cb_item.data = data;
468 //TIZEN_ONLY(20170405) Add gesture method to accessible interface
470 _efl_access_object_gesture_cb_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, Efl_Access_Gesture_Cb gesture_cb, const void *data)
472 pd->gesture_cb_item.cb = gesture_cb;
473 pd->gesture_cb_item.data = data;
476 EOLIAN static Eina_Bool
477 _efl_access_object_gesture_do(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, Efl_Access_Gesture_Info gesture_info)
479 Eina_Bool ret = EINA_FALSE;
480 if (pd->gesture_cb_item.cb)
481 ret = pd->gesture_cb_item.cb((void *)pd->gesture_cb_item.data, gesture_info, obj);
483 if (!ret && pd->legacy_gesture_cb_item.cb)
485 Elm_Atspi_Gesture_Info legacy_gesture_info;
486 legacy_gesture_info.type = (Elm_Atspi_Gesture_Type)gesture_info.type;
487 legacy_gesture_info.x_beg = gesture_info.x_beg;
488 legacy_gesture_info.y_beg = gesture_info.y_beg;
489 legacy_gesture_info.x_end = gesture_info.x_end;
490 legacy_gesture_info.y_end = gesture_info.y_end;
491 legacy_gesture_info.state = (Elm_Atspi_Gesture_State)gesture_info.state;
492 legacy_gesture_info.event_time = gesture_info.event_time;
493 ret = pd->legacy_gesture_cb_item.cb((void *)pd->legacy_gesture_cb_item.data, legacy_gesture_info, obj);
500 EOLIAN static const char *
501 _efl_access_object_localized_role_name_get(const Eo *obj, Efl_Access_Object_Data *pd EINA_UNUSED)
503 const char *ret = NULL;
504 ret = efl_access_object_role_name_get(obj);
511 EOLIAN static Eina_List *
512 _efl_access_object_access_children_get(const Eo *obj, Efl_Access_Object_Data *pd EINA_UNUSED)
514 Eina_List *children = NULL;
515 Eina_Iterator *iter = NULL;
518 // By default use Efl_Object object hierarchy
520 iter = efl_children_iterator_new((Eo *)obj);
521 if (!iter) return NULL;
523 EINA_ITERATOR_FOREACH(iter, chld)
525 if (efl_isa(chld, EFL_ACCESS_OBJECT_MIXIN))
527 children = eina_list_append(children, chld);
528 //TIZEN_ONLY(20181024): Fix parent-children incosistencies in atspi tree
529 efl_access_object_access_parent_set(chld, (Eo *)obj);
533 eina_iterator_free(iter);
538 EOLIAN static Efl_Access_State_Set
539 _efl_access_object_state_set_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd EINA_UNUSED)
544 //TIZEN_ONLY(20160726): add API elm_atspi_accessible_can_highlight_set/get
546 _efl_access_object_can_highlight_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd EINA_UNUSED, Eina_Bool can_highlight EINA_UNUSED)
548 WRN("The %s object does not implement the \"can_highlight_set\" function.",
549 efl_class_name_get(efl_class_get(obj)));
552 EOLIAN static Eina_Bool
553 _efl_access_object_can_highlight_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd EINA_UNUSED)
555 WRN("The %s object does not implement the \"can_highlight_get\" function.",
556 efl_class_name_get(efl_class_get(obj)));
561 //TIZEN_ONLY(20230220): Add SetListenPostRender to accessible object
563 _efl_access_object_listen_render_post_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd EINA_UNUSED, Eina_Bool enabled EINA_UNUSED)
565 WRN("The %s object does not implement the \"listen_render_post\" function.",
566 efl_class_name_get(efl_class_get(obj)));
570 EOLIAN Efl_Access_Relation_Set
571 _efl_access_object_relation_set_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd EINA_UNUSED)
573 //TIZEN_ONLY(20171115) Fixed the bugs and warnings in atspi relationship APIS
574 //return efl_access_relation_set_clone(pd->relations);
575 WRN("The %s object does not implement the \"accessible_relation_set\" function.",
576 efl_class_name_get(efl_class_get(obj)));
582 efl_access_attribute_free(Efl_Access_Attribute *attr)
584 eina_stringshare_del(attr->key);
585 eina_stringshare_del(attr->value);
589 EAPI void efl_access_attributes_list_free(Eina_List *list)
591 Efl_Access_Attribute *attr;
592 EINA_LIST_FREE(list, attr)
594 efl_access_attribute_free(attr);
599 _efl_access_object_event_emit(Eo *accessible, const Efl_Event_Description *event, void *event_info)
603 Efl_Access_Event_Handler *hdl;
605 if (!accessible || !event || !efl_isa(accessible, EFL_ACCESS_OBJECT_MIXIN))
607 CRI("Invalid parameters, event: %s, obj: %s", event ? event->name : "NULL", accessible ? efl_class_name_get(accessible) : "NULL");
612 ev.object = accessible;
614 ev.info = event_info;
615 EINA_LIST_FOREACH(global_callbacks, l, hdl)
618 hdl->cb(hdl->data, &ev);
622 EOLIAN Efl_Access_Event_Handler *
623 _efl_access_object_event_handler_add(Efl_Event_Cb cb, void *data)
625 Efl_Access_Event_Handler *ret = calloc(1, sizeof(Efl_Access_Event_Handler));
626 if (!ret) return NULL;
631 global_callbacks = eina_list_append(global_callbacks, ret);
637 _efl_access_object_event_handler_del(Efl_Access_Event_Handler *handler)
640 Efl_Access_Event_Handler *hdl;
641 EINA_LIST_FOREACH_SAFE(global_callbacks, l, l2, hdl)
645 global_callbacks = eina_list_remove_list(global_callbacks, l);
653 _efl_access_object_translation_domain_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, const char *domain)
655 eina_stringshare_replace(&pd->translation_domain, domain);
660 _efl_access_object_translation_domain_get(const Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd)
662 return pd->translation_domain;
666 efl_access_relation_free(Efl_Access_Relation *relation)
668 eina_list_free(relation->objects);
672 EAPI Efl_Access_Relation *
673 efl_access_relation_clone(const Efl_Access_Relation *relation)
675 Efl_Access_Relation *ret = calloc(1, sizeof(Efl_Access_Relation));
676 if (!ret) return NULL;
678 ret->type = relation->type;
679 ret->objects = eina_list_clone(relation->objects);
684 _on_rel_obj_del(void *data, const Efl_Event *event)
686 Efl_Access_Relation_Set *set = data;
687 Efl_Access_Relation *rel;
688 Eina_List *l, *l2, *p, *p2;
691 EINA_LIST_FOREACH_SAFE(*set, l, l2, rel)
693 EINA_LIST_FOREACH_SAFE(rel->objects, p, p2, rel_obj)
695 if (rel_obj == event->object)
696 rel->objects = eina_list_remove_list(rel->objects, p);
700 *set = eina_list_remove_list(*set, l);
707 efl_access_relation_set_relation_append(Efl_Access_Relation_Set *set, Efl_Access_Relation_Type type, const Eo *rel_obj)
709 Efl_Access_Relation *rel;
712 if (!efl_isa(rel_obj, EFL_ACCESS_OBJECT_MIXIN))
715 EINA_LIST_FOREACH(*set, l, rel)
717 if (rel->type == type)
719 ll = eina_list_data_find_list(rel->objects, rel_obj);
722 rel->objects = eina_list_append(rel->objects, rel_obj);
723 efl_event_callback_add((Eo *) rel_obj, EFL_EVENT_DEL, _on_rel_obj_del, set);
727 rel->objects = eina_list_demote_list(rel->objects, ll);
733 rel = calloc(1, sizeof(Efl_Access_Relation));
734 if (!rel) return EINA_FALSE;
737 rel->objects = eina_list_append(rel->objects, rel_obj);
738 *set = eina_list_append(*set, rel);
740 efl_event_callback_add((Eo *) rel_obj, EFL_EVENT_DEL, _on_rel_obj_del, set);
745 efl_access_relation_set_relation_remove(Efl_Access_Relation_Set *set, Efl_Access_Relation_Type type, const Eo *rel_obj)
748 Efl_Access_Relation *rel;
750 EINA_LIST_FOREACH(*set, l, rel)
752 if (rel->type == type)
754 if (eina_list_data_find(rel->objects, rel_obj))
756 efl_event_callback_del((Eo *) rel_obj, EFL_EVENT_DEL, _on_rel_obj_del, set);
757 rel->objects = eina_list_remove(rel->objects, rel_obj);
761 *set = eina_list_remove(*set, rel);
762 efl_access_relation_free(rel);
770 efl_access_relation_set_relation_type_remove(Efl_Access_Relation_Set *set, Efl_Access_Relation_Type type)
773 Efl_Access_Relation *rel;
776 EINA_LIST_FOREACH(*set, l, rel)
778 if (rel->type == type)
780 EINA_LIST_FOREACH(rel->objects, l, obj)
781 efl_event_callback_del(obj, EFL_EVENT_DEL, _on_rel_obj_del, set);
782 *set = eina_list_remove(*set, rel);
783 efl_access_relation_free(rel);
789 //TIZEN_ONLY(20171115) Fixed the bugs and warnings in atspi relationship APIS
791 efl_access_relation_set_free(Efl_Access_Relation_Set *set)
793 Efl_Access_Relation *rel;
797 EINA_LIST_FREE(*set, rel)
799 EINA_LIST_FOREACH(rel->objects, l, obj)
800 efl_event_callback_del(obj, EFL_EVENT_DEL, _on_rel_obj_del, set);
801 efl_access_relation_free(rel);
805 EAPI Efl_Access_Relation_Set
806 efl_access_relation_set_clone(const Efl_Access_Relation_Set *set)
808 Efl_Access_Relation_Set ret = NULL;
810 Efl_Access_Relation *rel;
812 EINA_LIST_FOREACH(*set, l, rel)
814 Efl_Access_Relation *cpy = efl_access_relation_clone(rel);
815 ret = eina_list_append(ret, cpy);
822 EOLIAN static Eina_Bool
823 _efl_access_object_relationship_append(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *sd, Efl_Access_Relation_Type type, const Efl_Access_Object *relation_obj)
825 return efl_access_relation_set_relation_append(&sd->relations, type, relation_obj);
829 _efl_access_object_relationship_remove(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *sd, Efl_Access_Relation_Type type, const Efl_Access_Object *relation_obj)
832 efl_access_relation_set_relation_remove(&sd->relations, type, relation_obj);
834 efl_access_relation_set_relation_type_remove(&sd->relations, type);
838 _efl_access_object_relationships_clear(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *sd)
840 //TIZEN_ONLY(20171115) Fixed the bugs and warnings in atspi relationship APIS
841 efl_access_relation_set_free(&sd->relations);
843 sd->relations = NULL;
846 //TIZEN_ONLY(20161122): add state_notify api
848 * Notify accessibility clients about current state of object
850 * @param mask bitfield with accessibilty field type values that should be
853 static void _elm_atspi_accessibility_state_notify(Eo *obj, Efl_Access_State_Set mask)
855 Efl_Access_State_Set ss;
856 Efl_Access_State_Type type;
858 ss = efl_access_object_state_set_get(obj);
860 for (type = EFL_ACCESS_STATE_TYPE_INVALID;
861 type < EFL_ACCESS_STATE_TYPE_LAST_DEFINED;
864 if (STATE_TYPE_GET(mask, type))
866 efl_access_state_changed_signal_emit(
867 obj, type, STATE_TYPE_GET(ss, type) ? EINA_TRUE : EINA_FALSE);
873 _efl_access_object_state_notify(Eo *obj, Efl_Access_Object_Data *data EINA_UNUSED, Efl_Access_State_Set mask, Eina_Bool recursive)
875 _elm_atspi_accessibility_state_notify(obj, mask);
879 Efl_Access_Object *child;
881 children = efl_access_object_access_children_get(obj);
882 EINA_LIST_FREE(children, child)
884 efl_access_object_state_notify(child, mask, recursive);
891 _efl_access_object_access_root_get(void)
894 root = efl_add(ELM_ATSPI_APP_OBJECT_CLASS, efl_main_loop_get());
900 _efl_access_object_efl_object_destructor(Eo *obj, Efl_Access_Object_Data *pd)
902 eina_stringshare_del(pd->name);
903 eina_stringshare_del(pd->description);
904 eina_stringshare_del(pd->translation_domain);
905 efl_access_relation_set_free(&pd->relations);
906 //TIZEN_ONLY(20181211): Fix for missing unregistration of atspi objects
907 unregister_atspi_object_in_bridge(obj);
910 efl_destructor(efl_super(obj, EFL_ACCESS_OBJECT_MIXIN));
914 _efl_access_shutdown(void)
916 Efl_Access_Event_Handler *hdl;
918 EINA_LIST_FREE(global_callbacks, hdl)
924 //TIZEN_ONLY(20171211): Keep Tizen Legacy API
926 elm_atspi_accessible_relationship_append(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Relation_Type type, const Elm_Interface_Atspi_Accessible *relation_object)
928 return efl_access_object_relationship_append(obj, type, relation_object);
932 elm_atspi_accessible_relationship_remove(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Relation_Type type, const Elm_Interface_Atspi_Accessible *relation_object)
934 efl_access_object_relationship_remove(obj, type, relation_object);
938 elm_atspi_accessible_translation_domain_get(const Elm_Interface_Atspi_Accessible *obj)
940 return efl_access_object_translation_domain_get(obj);
944 elm_atspi_accessible_translation_domain_set(Elm_Interface_Atspi_Accessible *obj, const char *domain)
946 efl_access_object_translation_domain_set(obj, domain);
950 elm_atspi_accessible_localized_role_name_get(const Elm_Interface_Atspi_Accessible *obj)
952 return efl_access_object_localized_role_name_get(obj);
955 EAPI void elm_atspi_accessible_name_set(Elm_Interface_Atspi_Accessible *obj, const char *name)
957 efl_access_object_i18n_name_set(obj, name);
961 elm_atspi_accessible_name_get(const Elm_Interface_Atspi_Accessible *obj)
963 return efl_access_object_i18n_name_get(obj);
967 elm_atspi_accessible_name_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Cb name_cb, const void *data)
969 efl_access_object_name_cb_set(obj, name_cb, data);
972 EAPI Elm_Atspi_Relation_Set
973 elm_atspi_accessible_relation_set_get(const Elm_Interface_Atspi_Accessible *obj)
975 return efl_access_object_relation_set_get(obj);
979 elm_atspi_accessible_role_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Role role)
981 efl_access_object_role_set(obj, role);
985 elm_atspi_accessible_role_get(const Elm_Interface_Atspi_Accessible *obj)
987 return efl_access_object_role_get(obj);
990 EAPI Eina_List *elm_atspi_accessible_children_get(const Elm_Interface_Atspi_Accessible *obj)
992 return efl_access_object_access_children_get(obj);
996 elm_atspi_accessible_role_name_get(const Elm_Interface_Atspi_Accessible *obj)
998 return efl_access_object_role_name_get(obj);
1002 elm_atspi_accessible_attributes_get(const Elm_Interface_Atspi_Accessible *obj)
1004 return efl_access_object_attributes_get(obj);
1008 elm_atspi_accessible_reading_info_type_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Type_Mask reading_info)
1010 efl_access_object_reading_info_type_set(obj, (Efl_Access_Reading_Info_Type_Mask)reading_info);
1013 EAPI Elm_Atspi_Reading_Info_Type_Mask
1014 elm_atspi_accessible_reading_info_type_get(const Elm_Interface_Atspi_Accessible *obj)
1016 return (Elm_Atspi_Reading_Info_Type_Mask)efl_access_object_reading_info_type_get(obj);
1020 elm_atspi_accessible_index_in_parent_get(const Elm_Interface_Atspi_Accessible *obj)
1022 return efl_access_object_index_in_parent_get(obj);
1026 elm_atspi_accessible_description_set(Elm_Interface_Atspi_Accessible *obj, const char *description)
1028 efl_access_object_description_set(obj, description);
1032 elm_atspi_accessible_description_get(const Elm_Interface_Atspi_Accessible *obj)
1034 return efl_access_object_description_get(obj);
1038 elm_atspi_accessible_description_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Cb description_cb, const void *data)
1040 efl_access_object_description_cb_set(obj, description_cb, data);
1044 elm_atspi_accessible_gesture_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Gesture_Cb gesture_cb, const void *data)
1046 efl_access_object_gesture_cb_set(obj, gesture_cb, data);
1050 elm_atspi_accessible_parent_set(Elm_Interface_Atspi_Accessible *obj, Elm_Interface_Atspi_Accessible *parent)
1052 efl_parent_set(obj, parent);
1055 EAPI Elm_Interface_Atspi_Accessible *
1056 elm_atspi_accessible_parent_get(const Elm_Interface_Atspi_Accessible *obj)
1058 //TIZEN_ONLY(20181024): Fix parent-children incosistencies in atspi tree
1059 return efl_access_object_access_parent_get(obj);
1063 EAPI Elm_Atspi_State_Set
1064 elm_atspi_accessible_state_set_get(const Elm_Interface_Atspi_Accessible *obj)
1066 return efl_access_object_state_set_get(obj);
1070 elm_atspi_accessible_can_highlight_set(Elm_Interface_Atspi_Accessible *obj, Eina_Bool can_highlight)
1072 efl_access_object_can_highlight_set(obj, can_highlight);
1076 elm_atspi_accessible_can_highlight_get(const Elm_Interface_Atspi_Accessible *obj)
1078 return efl_access_object_can_highlight_get(obj);
1082 elm_atspi_accessible_attribute_append(Elm_Interface_Atspi_Accessible *obj, const char *key, const char *value)
1084 efl_access_object_attribute_append(obj, key, value);
1088 elm_atspi_accessible_attributes_clear(Elm_Interface_Atspi_Accessible *obj)
1090 efl_access_object_attributes_clear(obj);
1094 elm_atspi_accessible_relationships_clear(Elm_Interface_Atspi_Accessible *obj)
1096 efl_access_object_relationships_clear(obj);
1100 elm_atspi_accessible_state_notify(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_State_Set state_types_mask, Eina_Bool recursive)
1102 efl_access_object_state_notify(obj, state_types_mask, recursive);
1105 EAPI void elm_atspi_relation_set_free(Elm_Atspi_Relation_Set *set)
1107 efl_access_relation_set_free(set);
1110 EAPI Elm_Atspi_Relation_Set elm_atspi_relation_set_clone(const Elm_Atspi_Relation_Set *set)
1112 return efl_access_relation_set_clone(set);
1115 EAPI void elm_atspi_relation_free(Elm_Atspi_Relation *relation)
1117 efl_access_relation_free(relation);
1120 EAPI Elm_Atspi_Relation * elm_atspi_relation_clone(const Elm_Atspi_Relation *relation)
1122 return efl_access_relation_clone(relation);
1125 EAPI Eina_Bool elm_atspi_relation_set_relation_append(Elm_Atspi_Relation_Set *set, Elm_Atspi_Relation_Type type, const Eo *rel_obj)
1127 return efl_access_relation_set_relation_append(set, type, rel_obj);
1130 EAPI void elm_atspi_relation_set_relation_remove(Elm_Atspi_Relation_Set *set, Elm_Atspi_Relation_Type type, const Eo *rel_obj)
1132 efl_access_relation_set_relation_remove(set, type, rel_obj);
1135 EAPI void elm_atspi_relation_set_relation_type_remove(Elm_Atspi_Relation_Set *set, Elm_Atspi_Relation_Type type)
1137 efl_access_relation_set_relation_type_remove(set, type);
1140 EAPI void elm_atspi_attributes_list_free(Eina_List *list)
1142 efl_access_attributes_list_free(list);
1146 #include "efl_access_object.eo.c"