From 8c30e40f3b3b87afee54470b1dc64151c32a63f1 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Mon, 11 Dec 2017 17:29:54 +0900 Subject: [PATCH] elm: keep Tizen legacy API Upstream is using prefix efl_access for legacy API. Tizen has used prefix elm_atspi for legacy API. Application is uisng elm_atspi API set. So we have to keep Tizen legacy API. @tizen_feature Change-Id: If0ea8ed9d477b5764c36c56eab756514aa2bfcd6 --- src/Makefile_Elementary.am | 1 + src/lib/elementary/efl_access.c | 205 +++++++++ src/lib/elementary/efl_access.eo | 223 ---------- src/lib/elementary/efl_access.h | 2 +- src/lib/elementary/efl_access_legacy.h | 792 +++++++++++++++++++++++++++++++++ 5 files changed, 999 insertions(+), 224 deletions(-) create mode 100644 src/lib/elementary/efl_access_legacy.h diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index e5cdfef..23604ef 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -224,6 +224,7 @@ includesunstable_HEADERS = \ lib/elementary/elm_gen_common.h \ lib/elementary/elm_atspi_bridge.h \ lib/elementary/efl_access.h \ + lib/elementary/efl_access_legacy.h \ lib/elementary/efl_access_text.h \ lib/elementary/efl_access_widget_action.h \ lib/elementary/efl_access_window.h \ diff --git a/src/lib/elementary/efl_access.c b/src/lib/elementary/efl_access.c index 49a440d..d862162 100644 --- a/src/lib/elementary/efl_access.c +++ b/src/lib/elementary/efl_access.c @@ -137,6 +137,13 @@ struct _Efl_Access_Gesture_Cb_Item const void *data; }; typedef struct _Efl_Access_Gesture_Cb_Item Efl_Access_Gesture_Cb_Item; + +struct _Elm_Atspi_Gesture_Cb_Item +{ + Elm_Atspi_Gesture_Cb cb; + const void *data; +}; +typedef struct _Elm_Atspi_Gesture_Cb_Item Elm_Atspi_Gesture_Cb_Item; // struct _Efl_Access_Data @@ -148,6 +155,7 @@ struct _Efl_Access_Data // //TIZEN_ONLY(20170405) Add gesture method to accessible interface Efl_Access_Gesture_Cb_Item gesture_cb_item; + Elm_Atspi_Gesture_Cb_Item legacy_gesture_cb_item; // Eina_List *attr_list; const char *name; @@ -430,6 +438,20 @@ _efl_access_gesture_do(Eo *obj EINA_UNUSED, Efl_Access_Data *pd, Efl_Access_Gest Eina_Bool ret = EINA_FALSE; if (pd->gesture_cb_item.cb) ret = pd->gesture_cb_item.cb((void *)pd->gesture_cb_item.data, gesture_info, (Evas_Object *)obj); + + if (!ret && pd->legacy_gesture_cb_item.cb) + { + Elm_Atspi_Gesture_Info legacy_gesture_info; + legacy_gesture_info.type = (Elm_Atspi_Gesture_Type)gesture_info.type; + legacy_gesture_info.x_beg = gesture_info.x_beg; + legacy_gesture_info.y_beg = gesture_info.y_beg; + legacy_gesture_info.x_end = gesture_info.x_end; + legacy_gesture_info.y_end = gesture_info.y_end; + legacy_gesture_info.state = (Elm_Atspi_Gesture_State)gesture_info.state; + legacy_gesture_info.event_time = gesture_info.event_time; + ret = pd->legacy_gesture_cb_item.cb((void *)pd->legacy_gesture_cb_item.data, legacy_gesture_info, (Evas_Object *)obj); + } + return ret; } // @@ -874,4 +896,187 @@ _efl_access_shutdown(void) ELM_SAFE_DEL(root); } +//TIZEN_ONLY(20171211): Keep Tizen Legacy API +EAPI Eina_Bool +elm_atspi_accessible_relationship_append(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Relation_Type type, const Elm_Interface_Atspi_Accessible *relation_object) +{ + return efl_access_relationship_append(obj, type, relation_object); +} + +EAPI void +elm_atspi_accessible_relationship_remove(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Relation_Type type, const Elm_Interface_Atspi_Accessible *relation_object) +{ + elm_atspi_accessible_relationship_remove(obj, type, relation_object); +} + +EAPI const char * +elm_atspi_accessible_translation_domain_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return elm_atspi_accessible_translation_domain_get(obj); +} + +EAPI void +elm_atspi_accessible_translation_domain_set(Elm_Interface_Atspi_Accessible *obj, const char *domain) +{ + efl_access_translation_domain_set(obj, domain); +} + +EAPI const char * +elm_atspi_accessible_localized_role_name_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_localized_role_name_get(obj); +} + +EAPI void elm_atspi_accessible_name_set(Elm_Interface_Atspi_Accessible *obj, const char *name) +{ + efl_access_name_set(obj, name); +} + +EAPI const char * +elm_atspi_accessible_name_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_name_get(obj); +} + +EAPI void +elm_atspi_accessible_name_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Cb name_cb, const void *data) +{ + efl_access_name_cb_set(obj, name_cb, data); +} + +EAPI Elm_Atspi_Relation_Set +elm_atspi_accessible_relation_set_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_relation_set_get(obj); +} + +EAPI void +elm_atspi_accessible_role_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Role role) +{ + efl_access_role_set(obj, role); +} + +EAPI Elm_Atspi_Role +elm_atspi_accessible_role_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_role_get(obj); +} + +EAPI Eina_List *elm_atspi_accessible_children_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_children_get(obj); +} + +EAPI const char * +elm_atspi_accessible_role_name_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_role_name_get(obj); +} + +EAPI Eina_List * +elm_atspi_accessible_attributes_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_attributes_get(obj); +} + +EAPI void +elm_atspi_accessible_reading_info_type_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Type_Mask reading_info) +{ + efl_access_reading_info_type_set(obj, reading_info); +} + +EAPI Elm_Atspi_Reading_Info_Type_Mask +elm_atspi_accessible_reading_info_type_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_reading_info_type_get(obj); +} + +EAPI int +elm_atspi_accessible_index_in_parent_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_index_in_parent_get(obj); +} + +EAPI void +elm_atspi_accessible_description_set(Elm_Interface_Atspi_Accessible *obj, const char *description) +{ + efl_access_description_set(obj, description); +} + +EAPI const char * +elm_atspi_accessible_description_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_description_get(obj); +} + +EAPI void +elm_atspi_accessible_description_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Cb description_cb, const void *data) +{ + efl_access_description_cb_set(obj, description_cb, data); +} + +EAPI void +elm_atspi_accessible_gesture_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Gesture_Cb gesture_cb, const void *data) +{ + Efl_Access_Data *sd = efl_data_scope_get(obj, ELM_ACCESS_CLASS); + + sd->legacy_gesture_cb_item.cb = gesture_cb; + sd->legacy_gesture_cb_item.data = data; +} + +EAPI void +elm_atspi_accessible_parent_set(Elm_Interface_Atspi_Accessible *obj, Elm_Interface_Atspi_Accessible *parent) +{ + efl_access_parent_set(obj, parent); +} + +EAPI Elm_Interface_Atspi_Accessible * +elm_atspi_accessible_parent_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_parent_get(obj); +} + +EAPI Elm_Atspi_State_Set +elm_atspi_accessible_state_set_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_state_set_get(obj); +} + +EAPI void +elm_atspi_accessible_can_highlight_set(Elm_Interface_Atspi_Accessible *obj, Eina_Bool can_highlight) +{ + efl_access_can_highlight_set(obj, can_highlight); +} + +EAPI Eina_Bool +elm_atspi_accessible_can_highlight_get(const Elm_Interface_Atspi_Accessible *obj) +{ + return efl_access_can_highlight_get(obj); +} + +EAPI void +elm_atspi_accessible_attribute_append(Elm_Interface_Atspi_Accessible *obj, const char *key, const char *value) +{ + efl_access_attribute_append(obj, key, value); +} + +EAPI void +elm_atspi_accessible_attributes_clear(Elm_Interface_Atspi_Accessible *obj) +{ + efl_access_attributes_clear(obj); +} + +EAPI void +elm_atspi_accessible_relationships_clear(Elm_Interface_Atspi_Accessible *obj) +{ + efl_access_relationships_clear(obj); +} + +EAPI void +elm_atspi_accessible_state_notify(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_State_Set state_types_mask, Eina_Bool recursive) +{ + efl_access_state_notify(obj, state_types_mask, recursive); +} +// + #include "efl_access.eo.c" diff --git a/src/lib/elementary/efl_access.eo b/src/lib/elementary/efl_access.eo index 18a8c53..4cad93b 100644 --- a/src/lib/elementary/efl_access.eo +++ b/src/lib/elementary/efl_access.eo @@ -120,117 +120,6 @@ enum Efl.Access.Role last_defined, [[Last enum entry sentinel]] } -//TIZEN_ONLY(200171207): Keep backward compatability -enum Elm.Atspi.Role -{ - [[Describes the role of an object visible to Accessibility Clients.]] - invalid, [[Role: invalid]] - accelerator_label, [[Role: accelerator label]] - alert, [[Role: alert]] - animation, [[Role: animation]] - arrow, [[Role: arrow]] - calendar, [[Role: calendar]] - canvas, [[Role: canvas]] - check_box, [[Role: check box]] - check_menu_item, [[Role: check menu item]] - color_chooser, [[Role: color chooser]] - column_header, [[Role: column header]] - combo_box, [[Role: combo box]] - date_editor, [[Role: data editor]] - desktop_icon, [[Role: desktop icon]] - desktop_frame, [[Role: desktop frame]] - dial, [[Role: dial]] - dialog, [[Role: dialog]] - directory_pane, [[Role: directory pane]] - drawing_area, [[Role: drawing area]] - file_chooser, [[Role: file chooser]] - filler, [[Role: filler]] - focus_traversable, [[Role: focus traversable]] - font_chooser, [[Role: font chooser]] - frame, [[Role: frame]] - glass_pane, [[Role: glass pane]] - html_container, [[Role: HTML container]] - icon, [[Role: icon]] - image, [[Role: image]] - internal_frame, [[Role: internal frame]] - label, [[Role: label]] - layered_pane, [[Role: layered pane]] - list, [[Role: list]] - list_item, [[Role: list item]] - menu, [[Role: menu]] - menu_bar, [[Role: menu bar]] - menu_item, [[Role: menu item]] - option_pane, [[Role: option pane]] - page_tab, [[Role: page tab]] - page_tab_list, [[Role: page tab list]] - panel, [[Role: panel]] - password_text, [[Role: password text]] - popup_menu, [[Role: popup menu]] - progress_bar, [[Role: progress bar]] - push_button, [[Role: push button]] - radio_button, [[Role: radio button]] - radio_menu_item, [[Role: radio menu item]] - root_pane, [[Role: root pane]] - row_header, [[Role: row header]] - scroll_bar, [[Role: scroll bar]] - scroll_pane, [[Role: scroll pane]] - separator, [[Role: separator]] - slider, [[Role: slider]] - spin_button, [[Role: spin button]] - split_pane, [[Role: split pane]] - status_bar, [[Role: status bar]] - table, [[Role: table]] - table_cell, [[Role: table cell]] - table_column_header, [[Role: table column header]] - table_row_header, [[Role: table row header]] - tearoff_menu_item, [[Role: tearoff menu item]] - terminal, [[Role: terminal]] - text, [[Role: text]] - toggle_button, [[Role: toggle button]] - tool_bar, [[Role: too bar]] - tool_tip, [[Role: tool tip]] - tree, [[Role: tree]] - tree_table, [[Role: tree table]] - unknown, [[Role: unknown]] - viewport, [[Role: viewport]] - window, [[Role: window]] - extended, [[Role: extended]] - header, [[Role: header]] - footer, [[Role: footer]] - paragraph, [[Role: paragraph]] - ruler, [[Role: ruler]] - application, [[Role: application]] - autocomplete, [[Role: autocomplete]] - editbar, [[Role: editbar]] - embedded, [[Role: embedded]] - entry, [[Role: entry]] - chart, [[Role: chart]] - caption, [[Role: caption]] - document_frame, [[Role: document frame]] - heading, [[Role: heading]] - page, [[Role: page]] - section, [[Role: section]] - redundant_object, [[Role: redundant object]] - form, [[Role: form]] - link, [[Role: link]] - input_method_window, [[Role: input method window]] - table_row, [[Role: table row]] - tree_item, [[Role: table item]] - document_spreadsheet, [[Role: document spreadsheet]] - document_presentation, [[Role: document presentation]] - document_text, [[Role: document text]] - document_web, [[Role: document web]] - document_email, [[Role: document email]] - comment, [[Role: comment]] - list_box, [[Role: list box]] - grouping, [[Role: grouping]] - image_map, [[Role: image map]] - notification, [[Role: notification]] - info_bar, [[Role: info bar]] - last_defined, [[Last enum entry sentinel]] -} -// - enum Efl.Access.State_Type { [[Describes a possible states of an object visible to accessibility clients.]] @@ -312,33 +201,6 @@ enum Efl.Access.Relation_Type last_defined, [[Last enum entry sentinel]] } -//TIZEN_ONLY(200171207): Keep backward compatability -enum Elm.Atspi.Relation_Type -{ - [[Describes relation between two objects.]] - null, [[No relation]] - label_for, [[Label for relation]] - labelled_by, [[Labelled by relation]] - controller_for, [[Controller for relation]] - controlled_by, [[Controlled by relation]] - member_of, [[Member of relation]] - tooltip_for, [[Tooltip for relation]] - node_child_of, [[Node child of relation]] - node_parent_of, [[Node parent of relation]] - extended, [[Extended relation]] - flows_to, [[Flows to relation]] - flows_from, [[Flows from relation]] - subwindow_of, [[Subwindow of relation]] - embeds, [[Embeds relation]] - embedded_by, [[Embedded by relation]] - popup_for, [[Popup for relation]] - parent_window_of, [[Parent window of relation]] - description_for, [[Description for relation]] - described_by, [[Described by relation]] - last_defined, [[Last enum entry sentinel]] -} -// - enum Efl.Access.Reading.Info.Type { [[The accessible Reading information type that can be read.]] @@ -348,17 +210,6 @@ enum Efl.Access.Reading.Info.Type state = 1 << 3, [[State should be read.]] } -//TIZEN_ONLY(200171207): Keep backward compatability -enum Elm.Atspi.Reading.Info.Type -{ - [[The accessible Reading information type that can be read.]] - name = 1 << 0, [[Name should be read]] - role = 1 << 1, [[Role should be read]] - description = 1 << 2, [[description should be read.]] - state = 1 << 3, [[State should be read.]] -} -// - enum Efl.Access.Gesture { one_finger_hover, @@ -407,55 +258,6 @@ enum Efl.Access.Gesture.State abort, } -//TIZEN_ONLY(200171207): Keep backward compatability -enum Elm.Atspi.Gesture -{ - one_finger_hover, - two_fingers_hover, - three_fingers_hover, - one_finger_flick_left, - one_finger_flick_right, - one_finger_flick_up, - one_finger_flick_down, - two_fingers_flick_left, - two_fingers_flick_right, - two_fingers_flick_up, - two_fingers_flick_down, - three_fingers_flick_left, - three_fingers_flick_right, - three_fingers_flick_up, - three_fingers_flick_down, - one_finger_single_tap, - one_finger_double_tap, - one_finger_triple_tap, - two_fingers_single_tap, - two_fingers_double_tap, - two_fingers_triple_tap, - three_fingers_single_tap, - three_fingers_double_tap, - three_fingers_triple_tap, - one_finger_flick_left_return, - one_finger_flick_right_return, - one_finger_flick_up_return, - one_finger_flick_down_return, - two_fingers_flick_left_return, - two_fingers_flick_right_return, - two_fingers_flick_up_return, - two_fingers_flick_down_return, - three_fingers_flick_left_return, - three_fingers_flick_right_return, - three_fingers_flick_up_return, - three_fingers_flick_down_return, -} - -enum Elm.Atspi.Gesture.State -{ - start, - move, - end, - abort, -} -// type Efl.Access.State_Set: uint64; [[Accessibility object state set.]] struct Efl.Access.Event.Handler; [[Accessibility event listener]] @@ -508,27 +310,11 @@ struct Efl.Access.Gesture.Info event_time: uint; [[gesture occurance time]] } -//TIZEN_ONLY(200171207): Keep backward compatability -struct Elm.Atspi.Gesture.Info -{ - type: Elm.Atspi.Gesture; [[Gesture type]] - x_beg: int; [[start gesture x co-ordinate]] - y_beg: int; [[start gesture y co-ordinate]] - x_end: int; [[end gesture x co-ordinate]] - y_end: int; [[end gesture y co-ordinate]] - state: Elm.Atspi.Gesture.State; [[state of gesture]] - event_time: uint; [[gesture occurance time]] -} -// - type Efl.Access.Relation_Set: list; [[Elementary Accessibility relation set type]] mixin Efl.Access (Efl.Interface, Efl.Object) { [[Accessibility accessible mixin]] - //TIZEN_ONLY(200171207): Keep backward compatability - legacy_prefix: elm_atspi_accessible; - // eo_prefix: efl_access; data: Efl_Access_Data; methods { @@ -733,9 +519,6 @@ mixin Efl.Access (Efl.Interface, Efl.Object) // event_handler_add @class @protected { [[Register accessibility event listener]] - //TIZEN_ONLY(200171207): Keep backward compatability - legacy: null; - // params { @in cb: Efl_Event_Cb; [[Callback]] @in data: void_ptr; [[Data]] @@ -744,18 +527,12 @@ mixin Efl.Access (Efl.Interface, Efl.Object) } event_handler_del @class @protected { [[Deregister accessibility event listener]] - //TIZEN_ONLY(200171207): Keep backward compatability - legacy: null; - // params { @in handler: ptr(Efl.Access.Event.Handler); [[Event handler]] } } event_emit @class @protected { [[Emit event]] - //TIZEN_ONLY(200171207): Keep backward compatability - legacy: null; - // params { @in accessible: Efl.Access; [[Accessibility object.]] @in event: ptr(const(Efl.Event.Description)); [[Accessibility event type.]] diff --git a/src/lib/elementary/efl_access.h b/src/lib/elementary/efl_access.h index 502cedf..23123a6 100644 --- a/src/lib/elementary/efl_access.h +++ b/src/lib/elementary/efl_access.h @@ -22,7 +22,7 @@ typedef Eina_Bool (*Efl_Access_Gesture_Cb)(void *data, Efl_Access_Gesture_Info g #include "efl_access.eo.h" #endif #ifndef EFL_NOLEGACY_API_SUPPORT -#include "efl_access.eo.legacy.h" +#include "efl_access_legacy.h" #endif // TIZEN_ONLY(20171114): atspi: expose highlight information on atspi diff --git a/src/lib/elementary/efl_access_legacy.h b/src/lib/elementary/efl_access_legacy.h new file mode 100644 index 0000000..e96308f --- /dev/null +++ b/src/lib/elementary/efl_access_legacy.h @@ -0,0 +1,792 @@ +typedef Eo Elm_Interface_Atspi_Accessible; + +enum _Elm_Atspi_Role +{ + ELM_ATSPI_ROLE_INVALID, + ELM_ATSPI_ROLE_ACCELERATOR_LABEL, + ELM_ATSPI_ROLE_ALERT, + ELM_ATSPI_ROLE_ANIMATION, + ELM_ATSPI_ROLE_ARROW, + ELM_ATSPI_ROLE_CALENDAR, + ELM_ATSPI_ROLE_CANVAS, + ELM_ATSPI_ROLE_CHECK_BOX, + ELM_ATSPI_ROLE_CHECK_MENU_ITEM, + ELM_ATSPI_ROLE_COLOR_CHOOSER, + ELM_ATSPI_ROLE_COLUMN_HEADER, + ELM_ATSPI_ROLE_COMBO_BOX, + ELM_ATSPI_ROLE_DATE_EDITOR, + ELM_ATSPI_ROLE_DESKTOP_ICON, + ELM_ATSPI_ROLE_DESKTOP_FRAME, + ELM_ATSPI_ROLE_DIAL, + ELM_ATSPI_ROLE_DIALOG, + ELM_ATSPI_ROLE_DIRECTORY_PANE, + ELM_ATSPI_ROLE_DRAWING_AREA, + ELM_ATSPI_ROLE_FILE_CHOOSER, + ELM_ATSPI_ROLE_FILLER, + ELM_ATSPI_ROLE_FOCUS_TRAVERSABLE, + ELM_ATSPI_ROLE_FONT_CHOOSER, + ELM_ATSPI_ROLE_FRAME, + ELM_ATSPI_ROLE_GLASS_PANE, + ELM_ATSPI_ROLE_HTML_CONTAINER, + ELM_ATSPI_ROLE_ICON, + ELM_ATSPI_ROLE_IMAGE, + ELM_ATSPI_ROLE_INTERNAL_FRAME, + ELM_ATSPI_ROLE_LABEL, + ELM_ATSPI_ROLE_LAYERED_PANE, + ELM_ATSPI_ROLE_LIST, + ELM_ATSPI_ROLE_LIST_ITEM, + ELM_ATSPI_ROLE_MENU, + ELM_ATSPI_ROLE_MENU_BAR, + ELM_ATSPI_ROLE_MENU_ITEM, + ELM_ATSPI_ROLE_OPTION_PANE, + ELM_ATSPI_ROLE_PAGE_TAB, + ELM_ATSPI_ROLE_PAGE_TAB_LIST, + ELM_ATSPI_ROLE_PANEL, + ELM_ATSPI_ROLE_PASSWORD_TEXT, + ELM_ATSPI_ROLE_POPUP_MENU, + ELM_ATSPI_ROLE_PROGRESS_BAR, + ELM_ATSPI_ROLE_PUSH_BUTTON, + ELM_ATSPI_ROLE_RADIO_BUTTON, + ELM_ATSPI_ROLE_RADIO_MENU_ITEM, + ELM_ATSPI_ROLE_ROOT_PANE, + ELM_ATSPI_ROLE_ROW_HEADER, + ELM_ATSPI_ROLE_SCROLL_BAR, + ELM_ATSPI_ROLE_SCROLL_PANE, + ELM_ATSPI_ROLE_SEPARATOR, + ELM_ATSPI_ROLE_SLIDER, + ELM_ATSPI_ROLE_SPIN_BUTTON, + ELM_ATSPI_ROLE_SPLIT_PANE, + ELM_ATSPI_ROLE_STATUS_BAR, + ELM_ATSPI_ROLE_TABLE, + ELM_ATSPI_ROLE_TABLE_CELL, + ELM_ATSPI_ROLE_TABLE_COLUMN_HEADER, + ELM_ATSPI_ROLE_TABLE_ROW_HEADER, + ELM_ATSPI_ROLE_TEAROFF_MENU_ITEM, + ELM_ATSPI_ROLE_TERMINAL, + ELM_ATSPI_ROLE_TEXT, + ELM_ATSPI_ROLE_TOGGLE_BUTTON, + ELM_ATSPI_ROLE_TOOL_BAR, + ELM_ATSPI_ROLE_TOOL_TIP, + ELM_ATSPI_ROLE_TREE, + ELM_ATSPI_ROLE_TREE_TABLE, + ELM_ATSPI_ROLE_UNKNOWN, + ELM_ATSPI_ROLE_VIEWPORT, + ELM_ATSPI_ROLE_WINDOW, + ELM_ATSPI_ROLE_EXTENDED, + ELM_ATSPI_ROLE_HEADER, + ELM_ATSPI_ROLE_FOOTER, + ELM_ATSPI_ROLE_PARAGRAPH, + ELM_ATSPI_ROLE_RULER, + ELM_ATSPI_ROLE_APPLICATION, + ELM_ATSPI_ROLE_AUTOCOMPLETE, + ELM_ATSPI_ROLE_EDITBAR, + ELM_ATSPI_ROLE_EMBEDDED, + ELM_ATSPI_ROLE_ENTRY, + ELM_ATSPI_ROLE_CHART, + ELM_ATSPI_ROLE_CAPTION, + ELM_ATSPI_ROLE_DOCUMENT_FRAME, + ELM_ATSPI_ROLE_HEADING, + ELM_ATSPI_ROLE_PAGE, + ELM_ATSPI_ROLE_SECTION, + ELM_ATSPI_ROLE_REDUNDANT_OBJECT, + ELM_ATSPI_ROLE_FORM, + ELM_ATSPI_ROLE_LINK, + ELM_ATSPI_ROLE_INPUT_METHOD_WINDOW, + ELM_ATSPI_ROLE_TABLE_ROW, + ELM_ATSPI_ROLE_TREE_ITEM, + ELM_ATSPI_ROLE_DOCUMENT_SPREADSHEET, + ELM_ATSPI_ROLE_DOCUMENT_PRESENTATION, + ELM_ATSPI_ROLE_DOCUMENT_TEXT, + ELM_ATSPI_ROLE_DOCUMENT_WEB, + ELM_ATSPI_ROLE_DOCUMENT_EMAIL, + ELM_ATSPI_ROLE_COMMENT, + ELM_ATSPI_ROLE_LIST_BOX, + ELM_ATSPI_ROLE_GROUPING, + ELM_ATSPI_ROLE_IMAGE_MAP, + ELM_ATSPI_ROLE_NOTIFICATION, + ELM_ATSPI_ROLE_INFO_BAR, + ELM_ATSPI_ROLE_LAST_DEFINED, +}; +/** + * Describes the role of an object visible to assistive technology client. + * @if MOBILE @since_tizen 3.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef enum _Elm_Atspi_Role Elm_Atspi_Role; + +enum _Elm_Atspi_State_Type +{ + ELM_ATSPI_STATE_INVALID, + ELM_ATSPI_STATE_ACTIVE, + ELM_ATSPI_STATE_ARMED, + ELM_ATSPI_STATE_BUSY, + ELM_ATSPI_STATE_CHECKED, + ELM_ATSPI_STATE_COLLAPSED, + ELM_ATSPI_STATE_DEFUNCT, + ELM_ATSPI_STATE_EDITABLE, + ELM_ATSPI_STATE_ENABLED, + ELM_ATSPI_STATE_EXPANDABLE, + ELM_ATSPI_STATE_EXPANDED, + ELM_ATSPI_STATE_FOCUSABLE, + ELM_ATSPI_STATE_FOCUSED, + ELM_ATSPI_STATE_HAS_TOOLTIP, + ELM_ATSPI_STATE_HORIZONTAL, + ELM_ATSPI_STATE_ICONIFIED, + ELM_ATSPI_STATE_MODAL, + ELM_ATSPI_STATE_MULTI_LINE, + ELM_ATSPI_STATE_MULTISELECTABLE, + ELM_ATSPI_STATE_OPAQUE, + ELM_ATSPI_STATE_PRESSED, + ELM_ATSPI_STATE_RESIZABLE, + ELM_ATSPI_STATE_SELECTABLE, + ELM_ATSPI_STATE_SELECTED, + ELM_ATSPI_STATE_SENSITIVE, + ELM_ATSPI_STATE_SHOWING, + ELM_ATSPI_STATE_SINGLE_LINE, + ELM_ATSPI_STATE_STALE, + ELM_ATSPI_STATE_TRANSIENT, + ELM_ATSPI_STATE_VERTICAL, + ELM_ATSPI_STATE_VISIBLE, + ELM_ATSPI_STATE_MANAGES_DESCENDANTS, + ELM_ATSPI_STATE_INDETERMINATE, + ELM_ATSPI_STATE_REQUIRED, + ELM_ATSPI_STATE_TRUNCATED, + ELM_ATSPI_STATE_ANIMATED, + ELM_ATSPI_STATE_INVALID_ENTRY, + ELM_ATSPI_STATE_SUPPORTS_AUTOCOMPLETION, + ELM_ATSPI_STATE_SELECTABLE_TEXT, + ELM_ATSPI_STATE_IS_DEFAULT, + ELM_ATSPI_STATE_VISITED, + //TIZEN_ONLY(20160329): atspi: implement HighlightGrab and HighlightClear methods (29e253e2f7ef3c632ac3a64c489bf569df407f30) + ELM_ATSPI_STATE_CHECKABLE, + ELM_ATSPI_STATE_HAS_POPUP, + ELM_ATSPI_STATE_READ_ONLY, + ELM_ATSPI_STATE_HIGHLIGHTED, + ELM_ATSPI_STATE_HIGHLIGHTABLE, + // + ELM_ATSPI_STATE_LAST_DEFINED, +}; +/** + * Describes a possible states of an object visible to AT-SPI clients. + * @if MOBILE @since_tizen 3.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef enum _Elm_Atspi_State_Type Elm_Atspi_State_Type; + +enum _Elm_Atspi_Relation_Type { + ELM_ATSPI_RELATION_NULL, + ELM_ATSPI_RELATION_LABEL_FOR, + ELM_ATSPI_RELATION_LABELLED_BY, + ELM_ATSPI_RELATION_CONTROLLER_FOR, + ELM_ATSPI_RELATION_CONTROLLED_BY, + ELM_ATSPI_RELATION_MEMBER_OF, + ELM_ATSPI_RELATION_TOOLTIP_FOR, + ELM_ATSPI_RELATION_NODE_CHILD_OF, + ELM_ATSPI_RELATION_NODE_PARENT_OF, + ELM_ATSPI_RELATION_EXTENDED, + ELM_ATSPI_RELATION_FLOWS_TO, + ELM_ATSPI_RELATION_FLOWS_FROM, + ELM_ATSPI_RELATION_SUBWINDOW_OF, + ELM_ATSPI_RELATION_EMBEDS, + ELM_ATSPI_RELATION_EMBEDDED_BY, + ELM_ATSPI_RELATION_POPUP_FOR, + ELM_ATSPI_RELATION_PARENT_WINDOW_OF, + ELM_ATSPI_RELATION_DESCRIPTION_FOR, + ELM_ATSPI_RELATION_DESCRIBED_BY, + ELM_ATSPI_RELATION_LAST_DEFINED, +}; +/** + * Elm_Atspi_Relation_Type describes relation between two objects. + * @if MOBILE @since_tizen 3.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef enum _Elm_Atspi_Relation_Type Elm_Atspi_Relation_Type; + +/** + * @brief The accessible Reading information type that can be read. + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * @ingroup Elm_Accessible_Reading_Info + */ +typedef enum +{ + ELM_ACCESSIBLE_READING_INFO_TYPE_NAME = 1 /* 0 << 0 */, /** Name should be + * read */ + ELM_ACCESSIBLE_READING_INFO_TYPE_ROLE = 2 /* 0 << 0 */, /** Role should be + * read */ + ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION = 4 /* 0 << 0 */, /** description should be read. */ + ELM_ACCESSIBLE_READING_INFO_TYPE_STATE = 8 /* 0 << 0 */ /** State should be + * read. */ +} Elm_Accessible_Reading_Info_Type; + +enum _Elm_Atspi_Gesture_Type +{ + ELM_ATSPI_GESTURE_ONE_FINGER_HOVER, + ELM_ATSPI_GESTURE_TWO_FINGERS_HOVER, + ELM_ATSPI_GESTURE_THREE_FINGERS_HOVER, + ELM_ATSPI_GESTURE_ONE_FINGER_FLICK_LEFT, + ELM_ATSPI_GESTURE_ONE_FINGER_FLICK_RIGHT, + ELM_ATSPI_GESTURE_ONE_FINGER_FLICK_UP, + ELM_ATSPI_GESTURE_ONE_FINGER_FLICK_DOWN, + ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_LEFT, + ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_RIGHT, + ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_UP, + ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_DOWN, + ELM_ATSPI_GESTURE_THREE_FINGERS_FLICK_LEFT, + ELM_ATSPI_GESTURE_THREE_FINGERS_FLICK_RIGHT, + ELM_ATSPI_GESTURE_THREE_FINGERS_FLICK_UP, + ELM_ATSPI_GESTURE_THREE_FINGERS_FLICK_DOWN, + ELM_ATSPI_GESTURE_ONE_FINGER_SINGLE_TAP, + ELM_ATSPI_GESTURE_ONE_FINGER_DOUBLE_TAP, + ELM_ATSPI_GESTURE_ONE_FINGER_TRIPLE_TAP, + ELM_ATSPI_GESTURE_TWO_FINGERS_SINGLE_TAP, + ELM_ATSPI_GESTURE_TWO_FINGERS_DOUBLE_TAP, + ELM_ATSPI_GESTURE_TWO_FINGERS_TRIPLE_TAP, + ELM_ATSPI_GESTURE_THREE_FINGERS_SINGLE_TAP, + ELM_ATSPI_GESTURE_THREE_FINGERS_DOUBLE_TAP, + ELM_ATSPI_GESTURE_THREE_FINGERS_TRIPLE_TAP, + ELM_ATSPI_GESTURE_ONE_FINGER_FLICK_LEFT_RETURN, + ELM_ATSPI_GESTURE_ONE_FINGER_FLICK_RIGHT_RETURN, + ELM_ATSPI_GESTURE_ONE_FINGER_FLICK_UP_RETURN, + ELM_ATSPI_GESTURE_ONE_FINGER_FLICK_DOWN_RETURN, + ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_LEFT_RETURN, + ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_RIGHT_RETURN, + ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_UP_RETURN, + ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_DOWN_RETURN, + ELM_ATSPI_GESTURE_THREE_FINGERS_FLICK_LEFT_RETURN, + ELM_ATSPI_GESTURE_THREE_FINGERS_FLICK_RIGHT_RETURN, + ELM_ATSPI_GESTURE_THREE_FINGERS_FLICK_UP_RETURN, + ELM_ATSPI_GESTURE_THREE_FINGERS_FLICK_DOWN_RETURN, +}; +/** + * Type of gesture that is emitted on assistive technology client side. + * + * @warning do not use ELM_ATSPI_GESTURE_TWO_FINGERS_FLICK_*, and + * ELM_ATSPI_GESTURE_TWO_FINGERS_HOVER. These gestures are not emitted on + * assistive technology client side. The window manager emits mouse event + * directly. So if you need to check these gestures, you have to handle mouse + * events. If you want to make highlighted object to get mouse events directly, + * then please use elm_atspi_accessible_attribute_append as below. + * + * elm_atspi_accessible_attribute_append(obj, "gesture_required", "scroll"); + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef enum _Elm_Atspi_Gesture_Type Elm_Atspi_Gesture_Type; + +enum _Elm_Atspi_Gesture_State +{ + ELM_ATSPI_GESTURE_STATE_START, + ELM_ATSPI_GESTURE_STATE_MOVE, + ELM_ATSPI_GESTURE_STATE_END, + ELM_ATSPI_GESTURE_STATE_ABORT, +}; +/** + * State of gesture that is emitted on assistive technology client side. + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef enum _Elm_Atspi_Gesture_State Elm_Atspi_Gesture_State; + +struct _Elm_Atspi_Gesture_Info +{ + Elm_Atspi_Gesture_Type type; + int x_beg; + int y_beg; + int x_end; + int y_end; + Elm_Atspi_Gesture_State state; + unsigned int event_time; +}; +/** + * Detailed information of gesture that is emitted on assistive technology client side. + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef struct _Elm_Atspi_Gesture_Info Elm_Atspi_Gesture_Info; + +/** + * A Elm_Accessible_Reading_Info_Type mask indicating which types of reading + * information are requested. + * @see elm_atspi_accessible_reading_info_type_set + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef unsigned int Elm_Atspi_Reading_Info_Type_Mask; + +/** + * This callback type is used to provide accessibility reading information. + * @param data The data specified as the last param when setting this callback + * @param obj The accessible object specified as the fisrt param when setting + * this callback + * @return The information to be used by accessibilty client + * @see elm_atspi_accessible_name_cb_set + * @see elm_atspi_accessible_description_cb_set + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef char *(*Elm_Atspi_Reading_Info_Cb)(void *data, Evas_Object *obj); + +/** + * This callback type is used to provide accessibility gesture information. + * @param data The data specified as the last param when setting this callback + * @param obj The accessible object specified as the fisrt param when setting + * this callback + * @return @c true if application consumes gesutre, @c false if application does + * not consume gesture, then assistive technology client consumes gesture + * @see elm_atspi_accessible_gesture_cb_set + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + */ +typedef Eina_Bool (*Elm_Atspi_Gesture_Cb)(void *data, Elm_Atspi_Gesture_Info gesture_info, Evas_Object *obj); + +/** AT-SPI object state set. + * + * @ingroup Elm_Atspi + */ +typedef uint64_t Elm_Atspi_State_Set; + +typedef Eina_List *Elm_Atspi_Relation_Set; + +/** + * @brief Defines the relationship between two accessible objects. + * + * Adds unique relation between source object and relation_object of a given + * type. + * + * Relationships can be queried by Assistive Technology clients to provide + * customized feedback, improving overall user experience. + * + * Relationship_append API is asymmetric, which means that appending, for + * example, relation ELM_ATSPI_RELATION_FLOWS_TO from object A to B, do NOT + * append relation ELM_ATSPI_RELATION_FLOWS_FROM from object B to object A. + * + * return: EINA_TRUE is relationship was successfully appended, EINA_FALSE + * otherwise + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] type Relation type between two objects + * @param[in] relation_object Relation object of source object + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Eina_Bool elm_atspi_accessible_relationship_append(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Relation_Type type, const Elm_Interface_Atspi_Accessible *relation_object); + +/** + * @brief Removes the relationship between two accessible objects. + * + * If relation_object is NULL function removes all relations of given type. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] type Relation type between two objects + * @param[in] relation_object Relation object of source object + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_relationship_remove(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Relation_Type type, const Elm_Interface_Atspi_Accessible *relation_object); + +/** + * @brief Gets the translation domain of "name" and "description" properties. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * + * @return translation domain + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI const char *elm_atspi_accessible_translation_domain_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Sets the translation domain of "name" and "description" properties. + * + * Translation domain should be set if application wants to support i18n for + * accessibily "name" and "description" properties. + * + * When translation domain is set values of "name" and "description" properties + * will be translated with dgettext function using current translation domain + * as "domainname" parameter. + * + * It is application developer responsibility to ensure that translation files + * are loaded and binded to translation domain when accessibility is enabled. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] domain translation domain + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_translation_domain_set(Elm_Interface_Atspi_Accessible *obj, const char *domain); + +/** + * @brief Gets an localized string describing accessible object role name. + * + * @internal + * + * @param[in] obj The object. + * + * @return Localized accessible role name + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI const char *elm_atspi_accessible_localized_role_name_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Sets an accessible name of the object. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] name Accessible name + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_name_set(Elm_Interface_Atspi_Accessible *obj, const char *name); + +/** + * @brief Gets an accessible name of the object. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * + * @return Accessible name + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI const char *elm_atspi_accessible_name_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Sets name information callback about widget. + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] name_cb The function called to provide the accessible name + * @param[in] data The data passed to @c name_cb + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_name_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Cb name_cb, const void *data); + +/** + * @brief Gets an all relations between accessible object and other accessible + * objects. + * + * @internal + * + * @param[in] obj The object. + * + * @return Accessible relation set + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Elm_Atspi_Relation_Set elm_atspi_accessible_relation_set_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Sets the role of the object in accessibility domain. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] role Accessible role + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_role_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Role role); + +/** + * @brief Gets the role of the object in accessibility domain. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * + * @return Accessible role + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Elm_Atspi_Role elm_atspi_accessible_role_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Gets object's accessible children. + * + * @internal + * @param[in] obj The object. + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Eina_List *elm_atspi_accessible_children_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Gets human-readable string indentifying widget accessibility role. + * + * @internal + * + * @param[in] obj The object. + * + * @return Accessible role name + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI const char *elm_atspi_accessible_role_name_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Gets key-value pairs identifying object extra attributes. Must be + * free by a user. + * + * @internal + * + * @param[in] obj The object. + * + * @return List of object attributes + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Eina_List *elm_atspi_accessible_attributes_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Gets reading information of an accessible object. + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] reading_info Reading information types + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_reading_info_type_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Type_Mask reading_info); + +/** + * @brief Gets reading information types of an accessible object. + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * + * @return Reading information types + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Elm_Atspi_Reading_Info_Type_Mask elm_atspi_accessible_reading_info_type_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Gets index of the child in parent's children list. + * + * @internal + * + * @param[in] obj The object. + * + * @return Index in children list + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI int elm_atspi_accessible_index_in_parent_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Sets widget contextual information. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] description Accessible contextual information + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_description_set(Elm_Interface_Atspi_Accessible *obj, const char *description); + +/** + * @brief Gets contextual information about object. + * + * @if MOBILE @since_tizen 2.4 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * + * @return Accessible contextual information + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI const char *elm_atspi_accessible_description_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Sets contextual information callback about widget. + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] description_cb The function called to provide the accessible + * description + * @param[in] data The data passed to @c description_cb + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_description_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Reading_Info_Cb description_cb, const void *data); + +/** + * @brief Sets gesture callback to give widget. + * + * @warning Please do not abuse this API. The purpose of this API is to support + * special application such as screen-reader guidance. Before using this API, + * please check if there is another way. + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] gesutre_cb The function called to get gesture information + * @param[in] data The data passed to @c description_cb + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_gesture_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_Gesture_Cb gesture_cb, const void *data); + +/** + * @brief Sets object's accessible parent. + * + * @internal + * + * @param[in] obj The object. + * @param[in] parent + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_parent_set(Elm_Interface_Atspi_Accessible *obj, Elm_Interface_Atspi_Accessible *parent); + +/** + * @brief Gets object's accessible parent. + * + * @internal + * @param[in] obj The object. + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Elm_Interface_Atspi_Accessible *elm_atspi_accessible_parent_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Gets set describing object accessible states. + * + * @internal + * @param[in] obj The object. + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Elm_Atspi_State_Set elm_atspi_accessible_state_set_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Sets highlightable to given widget. + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] can_highlight If @c true, the object is highlightable + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_can_highlight_set(Elm_Interface_Atspi_Accessible *obj, Eina_Bool can_highlight); + +/** + * @brief Gets highlightable of given widget. + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * + * @return If @c true, the object is highlightable + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI Eina_Bool elm_atspi_accessible_can_highlight_get(const Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Add key-value pair identifying widget extra attribute + * + * @if MOBILE @since_tizen 4.0 @elseif WEARABLE @since_tizen 3.0 @endif + * + * @param[in] obj The object. + * @param[in] key The string key to give extra information + * @param[in] value The string value to give extra information + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_attribute_append(Elm_Interface_Atspi_Accessible *obj, const char *key, const char *value); + +/** + * @brief Removes all attributes in accessible object. + * + * @internal + * @param[in] obj The object. + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_attributes_clear(Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Register accessibility event listener + * + * @internal + * + * @param[in] cb callback + * @param[in] data data + * + * @return Event handler + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +//TODO: check if it is necessary +//EAPI Elm_Atspi_Event_Handler *elm_atspi_accessible_event_handler_add(Eo_Event_Cb cb, void *data); + +/** + * @brief Deregister accessibility event listener + * + * @internal + * + * @param[in] handler Event handler + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +//TODO: check if it is necessary +//EAPI void elm_atspi_accessible_event_handler_del(Elm_Atspi_Event_Handler *handler); + +/** + * @brief Emit accessibility event which could occur atspi event + * + * @internal + * + * @param[in] accessible Accessibility object. + * @param[in] event Accessibility event type. + * @param[in] event_info Accessibility event details. + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +//TODO: check if it is necessary +//EAPI void elm_atspi_accessible_event_emit(Elm_Interface_Atspi_Accessible *accessible, const Eo_Event_Description *event, void *event_info); + +/** + * @brief Removes all relationships in accessible object. + * + * @since_tizen 4.0 + * @param[in] obj The object. + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_relationships_clear(Elm_Interface_Atspi_Accessible *obj); + +/** + * @brief Notifies assistive technology clients about current state of the + * accessibile object. + * + * Function limits information broadcast to clients to types specified by + * state_types_mask parameter. + * + * if recursive parameter is set, function will traverse all accessible + * children and call state_notify function on them. + * + * @internal + * + * @param[in] obj The object. + * @param[in] state_types_mask + * @param[in] recursive + * + * @ingroup Elm_Interface_Atspi_Accessible + */ +EAPI void elm_atspi_accessible_state_notify(Elm_Interface_Atspi_Accessible *obj, Elm_Atspi_State_Set state_types_mask, Eina_Bool recursive); + +#include "efl_access.eo.legacy.h" -- 2.7.4