From 7a90e9bd1fe536d4829664052d8c2d8c496a356d Mon Sep 17 00:00:00 2001 From: Jiyoun Park Date: Sat, 23 Dec 2017 13:45:56 +0900 Subject: [PATCH] rebase_build: fix build error related with tizen_only code opensource change the code, so change tizen only code based on opensource. --- src/lib/ecore_wl2/ecore_wl2_display.c | 3 +- src/lib/elementary/efl_access_component.c | 1 + src/lib/elementary/efl_access_component.eo | 6 +- src/lib/elementary/efl_ui_multibuttonentry.c | 10 +- src/lib/elementary/efl_ui_win.c | 108 +++++++++++++++--- src/lib/elementary/elc_ctxpopup.c | 1 + src/lib/elementary/elc_popup.c | 3 +- src/lib/elementary/elm_atspi_bridge.c | 160 ++++++++++++++++----------- src/lib/elementary/elm_atspi_ewk_wrapper.c | 2 +- src/lib/elementary/elm_atspi_proxy.c | 13 +++ src/lib/elementary/elm_gengrid.c | 1 + src/lib/elementary/elm_hover.c | 1 - src/lib/elementary/elm_label.c | 4 +- src/lib/elementary/elm_toolbar.c | 1 - src/lib/elementary/elm_widget.h | 21 ++-- 15 files changed, 228 insertions(+), 107 deletions(-) diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c b/src/lib/ecore_wl2/ecore_wl2_display.c index 90995b7..049a6d2 100644 --- a/src/lib/ecore_wl2/ecore_wl2_display.c +++ b/src/lib/ecore_wl2/ecore_wl2_display.c @@ -1372,8 +1372,7 @@ _ecore_wl2_display_connect(Ecore_Wl2_Display *ewd, Eina_Bool sync) ewd->wl.registry = wl_display_get_registry(ewd->wl.display); wl_registry_add_listener(ewd->wl.registry, &_registry_listener, ewd); - cb = wl_display_sync(ewd->wl.display); - wl_callback_add_listener(cb, &_sync_listener, ewd); + _ecore_wl2_display_sync_add(ewd); if (sync) { diff --git a/src/lib/elementary/efl_access_component.c b/src/lib/elementary/efl_access_component.c index 42a64a7..9d853ed 100644 --- a/src/lib/elementary/efl_access_component.c +++ b/src/lib/elementary/efl_access_component.c @@ -3,6 +3,7 @@ #endif #define EFL_ACCESS_COMPONENT_PROTECTED +#define EFL_ACCESS_COMPONENT_BETA #define EFL_ACCESS_PROTECTED #include diff --git a/src/lib/elementary/efl_access_component.eo b/src/lib/elementary/efl_access_component.eo index d9d0bcf..240c863 100644 --- a/src/lib/elementary/efl_access_component.eo +++ b/src/lib/elementary/efl_access_component.eo @@ -100,7 +100,7 @@ mixin Efl.Access.Component () return: Efl.Object; [[Top component object at given coordinate]] } //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes - highlight_grab @protected { + highlight_grab @protected @beta { [[ Highlights accessible widget. returns true if highlight grab has successed, false otherwise. @@ -112,7 +112,7 @@ mixin Efl.Access.Component () // return: bool; } - highlight_clear @protected { + highlight_clear @protected @beta { [[ Clears highlight of accessible widget. returns true if clear has successed, false otherwise. @@ -126,7 +126,7 @@ mixin Efl.Access.Component () } // //TIZEN_ONLY(20161114): make atspi proxy work for more than two sockets created in one process - @property socket_offset @protected { + @property socket_offset @protected @beta { set { [[Sets position of socket offset.]] } diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c b/src/lib/elementary/efl_ui_multibuttonentry.c index 6b525f5..6520a1c 100644 --- a/src/lib/elementary/efl_ui_multibuttonentry.c +++ b/src/lib/elementary/efl_ui_multibuttonentry.c @@ -716,14 +716,14 @@ _access_multibuttonentry_item_register(Evas_Object *obj, static char * _label_access_info_cb(void *data, Evas_Object *obj EINA_UNUSED) { - ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN_VAL(data, sd, NULL); + EFL_UI_MULTIBUTTONENTRY_DATA_GET_OR_RETURN_VAL(data, sd, NULL); return strdup((char *)sd->label_str); } static void _atspi_multibuttonentry_label_register(Evas_Object *obj, Eina_Bool is_atspi) { - ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(obj, sd); + EFL_UI_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(obj, sd); Evas_Object *label_obj; label_obj = (Evas_Object *)edje_object_part_object_get(sd->label, "elm.text"); if (label_obj) @@ -1698,7 +1698,7 @@ _atspi_obj_process(Evas_Object *obj, Eina_Bool is_atspi) Eina_List *l; Elm_Object_Item *it; - ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(obj, sd); + EFL_UI_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(obj, sd); /* label */ _atspi_multibuttonentry_label_register(obj, is_atspi); @@ -1720,7 +1720,7 @@ _efl_ui_multibuttonentry_elm_widget_on_access_update(Eo *obj, Efl_Ui_Multibutton //register/unregister access objects accordingly. // TIZEN_ONLY(20170516): connect to at-spi dbus based on org.a11y.Status.IsEnabled property EOLIAN static void -_elm_multibuttonentry_elm_widget_screen_reader(Eo *obj, Elm_Multibuttonentry_Data *sd EINA_UNUSED, Eina_Bool is_screen_reader) +_efl_ui_multibuttonentry_elm_widget_screen_reader(Eo *obj, Efl_Ui_Multibuttonentry_Data *sd EINA_UNUSED, Eina_Bool is_screen_reader) { _atspi_obj_process(obj, is_screen_reader); //TIZEN_ONLY(20161213): apply screen_reader_changed callback @@ -2080,7 +2080,7 @@ _efl_ui_multibuttonentry_class_constructor(Efl_Class *klass) } EOLIAN static Eina_List* -_elm_multibuttonentry_efl_access_children_get(Eo *obj EINA_UNUSED, Elm_Multibuttonentry_Data *sd) +_efl_ui_multibuttonentry_efl_access_children_get(Eo *obj, Efl_Ui_Multibuttonentry_Data *sd) { Eina_List *ret = NULL; //TIZEN_ONLY(20160527) : Improve MBE atspi support diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index a008e37..b06a2a8 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -9,8 +9,11 @@ #define EFL_GFX_SIZE_HINT_PROTECTED #define EFL_CANVAS_OBJECT_BETA #define EFL_CANVAS_OBJECT_PROTECTED +#define EFL_UI_TRANSLATABLE_PROTECTED #define EFL_UI_WIN_INLINED_PROTECTED +#define EFL_UI_FOCUS_OBJECT_PROTECTED #define EFL_UI_WIN_BETA +#define EFL_CANVAS_BETA #include #include @@ -28,6 +31,7 @@ #include "elm_part_helper.h" #include "efl_ui_win_part.eo.h" +#include "elm_plug.eo.h" #define MY_CLASS EFL_UI_WIN_CLASS #define MY_CLASS_NAME "Efl.Ui.Win" @@ -37,6 +41,8 @@ static const Elm_Win_Trap *trap = NULL; +static int _paused_windows = 0; + #define TRAP(sd, name, ...) \ do \ { \ @@ -81,6 +87,7 @@ struct _Efl_Ui_Win_Data Evas_Object *img_obj, *frame_obj; Eo /* wref */ *bg, *content; Evas_Object *obj; /* The object itself */ + Evas_Object *indicator; #ifdef HAVE_ELEMENTARY_X struct { @@ -391,16 +398,18 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = { {SIG_WIDGET_UNFOCUSED, ""}, /**< handled by elm_widget */ // TIZEN_ONLY(20150707): elm_conform for wayland, and signal if parts are changed {SIG_CONFORMANT_CHANGED, ""}, -// {SIG_AUX_HINT_ALLOWED, ""}, {SIG_AUX_MESSAGE_RECEIVED, ""}, {SIG_EFFECT_STARTED, ""}, {SIG_EFFECT_DONE, ""}, {SIG_LAUNCH_DONE, ""}, - //TIZEN_ONLY(20161028): add smart signal 'atspi,screen,reader,changed' +// +//TIZEN_ONLY(20161028): add smart signal 'atspi,screen,reader,changed' {SIG_ATSPI_SCREEN_READER_CHANGED, ""}, - // +// +// TIZEN_ONLY(20150707): elm_conform for wayland, and signal if parts are changed {SIG_VISIBILITY_CHANGED, ""}, +// {NULL, NULL} }; @@ -431,7 +440,11 @@ static Evas_Object *_precreated_win_obj = NULL; static Eina_Bool _elm_win_auto_throttled = EINA_FALSE; +/*TIZEN_ONLY(20171113):Use ecore_job instead of ecore_timer +static Ecore_Timer *_elm_win_state_eval_timer = NULL; +*/ static Ecore_Job *_elm_win_state_eval_job = NULL; +// static void _elm_win_legacy_init(Efl_Ui_Win_Data *sd); static void @@ -556,7 +569,7 @@ _elm_win_apply_alpha(Eo *obj, Efl_Ui_Win_Data *sd) } } -static void +static Eina_Bool _elm_win_state_eval(void *data EINA_UNUSED) { Eina_List *l; @@ -566,7 +579,11 @@ _elm_win_state_eval(void *data EINA_UNUSED) int _elm_win_count_withdrawn = 0; Eina_Bool throttle = EINA_FALSE; +/*TIZEN_ONLY(20171113):Use ecore_job instead of ecore_timer + _elm_win_state_eval_timer = NULL; +*/ _elm_win_state_eval_job = NULL; +// EINA_LIST_FOREACH(_elm_win_list, l, obj) { @@ -654,6 +671,7 @@ _elm_win_state_eval(void *data EINA_UNUSED) } } _win_noblank_eval(); + return EINA_FALSE; } static Eina_Bool @@ -694,8 +712,13 @@ _elm_win_flush_cache_and_exit(Eo *obj) static void _elm_win_state_eval_queue(void) { +/*TIZEN_ONLY(20171113):Use ecore_job instead of ecore_timer + if (_elm_win_state_eval_timer) ecore_timer_del(_elm_win_state_eval_timer); + _elm_win_state_eval_timer = ecore_timer_add(0.5, _elm_win_state_eval, NULL); +*/ if (_elm_win_state_eval_job) ecore_job_del(_elm_win_state_eval_job); _elm_win_state_eval_job = ecore_job_add(_elm_win_state_eval, NULL); +// } // example shot spec (wait 0.1 sec then save as my-window.png): @@ -1700,10 +1723,10 @@ _elm_win_state_change(Ecore_Evas *ee) Eina_Bool ch_wm_rotation = EINA_FALSE; // TIZEN_ONLY(20150707): elm_conform for wayland, and signal if parts are changed Eina_Bool ch_conformant = EINA_FALSE; -// Eina_Bool ch_visibility = EINA_FALSE; Eina_Bool ch_aux_hint = EINA_FALSE; Eina_List *aux_hints = NULL; +// const char *profile; @@ -2594,11 +2617,19 @@ _efl_ui_win_show(Eo *obj, Efl_Ui_Win_Data *sd) if (do_eval) { +/*TIZEN_ONLY(20171113):Use ecore_job instead of ecore_timer + if (_elm_win_state_eval_timer) + { + ecore_timer_del(_elm_win_state_eval_timer); + _elm_win_state_eval_timer = NULL; + } +*/ if (_elm_win_state_eval_job) { ecore_job_del(_elm_win_state_eval_job); _elm_win_state_eval_job = NULL; } +// _elm_win_state_eval(NULL); } if (sd->shot.info) _shot_handle(sd); @@ -3555,6 +3586,7 @@ _elm_win_wl_cursor_set(Evas_Object *obj, const char *cursor) } } +// TIZEN_ONLY(20171109):allow changing window type after initializing static void _elm_win_wlwin_type_update(Efl_Ui_Win_Data *sd) { @@ -3587,7 +3619,7 @@ _elm_win_wlwin_type_update(Efl_Ui_Win_Data *sd) case ELM_WIN_COMBO: case ELM_WIN_MENU: case ELM_WIN_POPUP_MENU: - wtype = ECORE_WL2_WINDOW_TYPE_MENU; + wtype = ECORE_WL2_WI// TIZEN_ONLY(20150722):NDOW_TYPE_MENU; break; case ELM_WIN_DND: wtype = ECORE_WL2_WINDOW_TYPE_DND; @@ -3597,6 +3629,7 @@ _elm_win_wlwin_type_update(Efl_Ui_Win_Data *sd) } ecore_wl2_window_type_set(sd->wl.win, wtype); } +// // TIZEN_ONLY(20150722): added signal for aux_hint(auxiliary hint) struct _Elm_Win_Aux_Message @@ -4032,7 +4065,11 @@ _elm_win_shutdown(void) _elm_win_list = eina_list_remove_list(_elm_win_list, _elm_win_list); } } +/*TIZEN_ONLY(20171113):Use ecore_job instead of ecore_timer + ELM_SAFE_FREE(_elm_win_state_eval_timer, ecore_timer_del); +*/ ELM_SAFE_FREE(_elm_win_state_eval_job, ecore_job_del); +// } void @@ -4138,6 +4175,47 @@ _elm_win_screen_reader(Eina_Bool is_screen_reader) } // +//TIZEN_ONLY(20170621) handle atspi proxy connection at runtime +void +_elm_win_atspi(Eina_Bool is_atspi) +{ + const Eina_List *l; + Evas_Object *obj; + Efl_Access_State_Set ss; + + EINA_LIST_FOREACH(_elm_win_list, l, obj) + { + if (!is_atspi) + { + _access_socket_proxy_unref(obj); + } + else + { + _access_socket_proxy_listen(obj); + ss = efl_access_state_set_get(obj); + if (STATE_TYPE_GET(ss, EFL_ACCESS_STATE_ACTIVE)) + { + efl_access_window_activated_signal_emit(obj); + efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_ACTIVE, EINA_TRUE); + } + else + { + Efl_Access_Role role; + role = efl_access_role_get(obj); + if (role == EFL_ACCESS_ROLE_INPUT_METHOD_WINDOW) + { + efl_access_window_activated_signal_emit(obj); + efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_ACTIVE, EINA_TRUE); + } + } + } + elm_widget_atspi(obj, is_atspi); + } +} +// +// +// + void _elm_win_translate(void) { @@ -5885,7 +5963,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U evas_event_callback_add(sd->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE, _elm_win_frame_pre_render, sd); #endif - // TIZEN_ONLY (20151017) do not prohibit fake win's auto-render +// TIZEN_ONLY (20151017) do not prohibit fake win's auto-render if (type != ELM_WIN_FAKE) { //Prohibiting auto-rendering, until elm_win is shown. @@ -5901,7 +5979,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U } } } - // + // #ifdef ELM_DEBUG Evas_Modifier_Mask mask = evas_key_modifier_mask_get(sd->evas, "Control"); @@ -7217,8 +7295,8 @@ _elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd) Eina_Bool ret = EINA_FALSE, prev_alpha; const char *s; - int_ret = _elm_theme_object_set(obj, sd->legacy.edje, "win", "base", - elm_widget_style_get(obj)); + int_ret = elm_widget_theme_object_set(obj, sd->legacy.edje, "win", "base", + elm_widget_style_get(obj)); if (!int_ret) return EFL_UI_THEME_APPLY_FAILED; edje_object_mirrored_set(sd->legacy.edje, efl_ui_mirrored_get(obj)); @@ -7440,6 +7518,7 @@ elm_win_floating_mode_set(Evas_Object *obj, Eina_Bool floating) floating = !!floating; if (floating == sd->floating) return; sd->floating = floating; +//TIZEN_ONLY(20171114): implement elm_win_floating_mode_set on wayland #if HAVE_ELEMENTARY_WL2 _elm_win_wlwindow_get(sd); if (sd->wl.win) @@ -7448,6 +7527,7 @@ elm_win_floating_mode_set(Evas_Object *obj, Eina_Bool floating) ecore_wl2_window_floating_mode_set(sd->wl.win, floating); } #endif +// #ifdef HAVE_ELEMENTARY_X _internal_elm_win_xwindow_get(sd); if (sd->x.xwin) @@ -9040,10 +9120,10 @@ elm_win_add(Evas_Object *parent, const char *name, Efl_Ui_Win_Type type) default: break; } - Evas_Object *obj = efl_add(klass, parent, - efl_canvas_object_legacy_ctor(efl_added), - efl_ui_win_name_set(efl_added, name), - efl_ui_win_type_set(efl_added, type)); + Evas_Object *obj = elm_legacy_add(klass, parent, + efl_ui_win_name_set(efl_added, name), + efl_ui_win_type_set(efl_added, type)); + //TIZEN_ONLY(20160628): Add Performance log for cold booting #ifdef ENABLE_TTRACE traceEnd(TTRACE_TAG_EFL); diff --git a/src/lib/elementary/elc_ctxpopup.c b/src/lib/elementary/elc_ctxpopup.c index 280a803..0e362a0 100644 --- a/src/lib/elementary/elc_ctxpopup.c +++ b/src/lib/elementary/elc_ctxpopup.c @@ -6,6 +6,7 @@ #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define ELM_WIDGET_PROTECTED #define ELM_WIDGET_ITEM_PROTECTED +#define EFL_ACCESS_COMPONENT_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED #include diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c index 57ce2e0..654d85d 100644 --- a/src/lib/elementary/elc_popup.c +++ b/src/lib/elementary/elc_popup.c @@ -7,6 +7,7 @@ #define ELM_WIDGET_PROTECTED #define ELM_WIDGET_ITEM_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED +#define EFL_ACCESS_COMPONENT_PROTECTED #include #include "elm_priv.h" @@ -2268,7 +2269,7 @@ _notify_style_set(Evas_Object *obj, const char *style) EINA_LIST_FOREACH(wd->cursors, l, cur) elm_cursor_theme(cur); - ret &= elm_obj_widget_theme_apply(obj); + ret &= efl_ui_widget_theme_apply(obj); } return ret; diff --git a/src/lib/elementary/elm_atspi_bridge.c b/src/lib/elementary/elm_atspi_bridge.c index de055a0..55cfa4d 100644 --- a/src/lib/elementary/elm_atspi_bridge.c +++ b/src/lib/elementary/elm_atspi_bridge.c @@ -18,12 +18,15 @@ #include #include #include "elm_priv.h" +//TIZEN_ONLY(20171222): include eo info header for class check +#include "elm_widget_index.h" +// /* * Accessibility Bus info not defined in atspi-constants.h */ - #define A11Y_DBUS_NAME "org.a11y.Bus" - #define A11Y_DBUS_PATH "/org/a11y/bus" +#define A11Y_DBUS_NAME "org.a11y.Bus" +#define A11Y_DBUS_PATH "/org/a11y/bus" #define A11Y_DBUS_INTERFACE "org.a11y.Bus" #define A11Y_DBUS_STATUS_INTERFACE "org.a11y.Status" // TIZEN_ONLY(20170516): connect to at-spi dbus based on org.a11y.Status.IsEnabled property @@ -232,6 +235,15 @@ static const Elm_Atspi_Bridge_Event_Handler event_handlers[] = { // }; +//TIZEN_ONLY(20170925) atspi: send detail value for window activated signal +enum +{ + EFL_ACCESS_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED = 0, + EFL_ACCESS_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_DISABLED = 1 << 0, + EFL_ACCESS_WINDOW_ACTIVATE_INFO_KEYBOARD = 1 << 1, +}; +// + enum _Atspi_Object_Child_Event_Type { ATSPI_OBJECT_CHILD_ADDED = 0, @@ -3928,8 +3940,8 @@ _iter_interfaces_append(Eldbus_Message_Iter *iter, const Eo *obj) static Eina_Bool _cache_item_reference_append_cb(Eo *bridge, Eo *data, Eldbus_Message_Iter *iter_array) { - if (!efl_ref_get(data) || efl_destructed_is(data)) - return EINA_TRUE; + if (!efl_ref_count(data) || efl_destructed_is(data)) + return EINA_TRUE; Eldbus_Message_Iter *iter_struct, *iter_sub_array; Efl_Access_State_Set states; @@ -3987,46 +3999,46 @@ _cache_item_reference_append_cb(Eo *bridge, Eo *data, Eldbus_Message_Iter *iter_ //eina_list_free(children_list); // - /* Marshall interfaces */ - _iter_interfaces_append(iter_struct, data); + /* Marshall interfaces */ + _iter_interfaces_append(iter_struct, data); - /* Marshall name */ - const char *name = NULL; - name = efl_access_name_get(data); - if (!name) - name = ""; + /* Marshall name */ + const char *name = NULL; + name = efl_access_name_get(data); + if (!name) + name = ""; - eldbus_message_iter_basic_append(iter_struct, 's', name); + eldbus_message_iter_basic_append(iter_struct, 's', name); - /* Marshall role */ - eldbus_message_iter_basic_append(iter_struct, 'u', role); + /* Marshall role */ + eldbus_message_iter_basic_append(iter_struct, 'u', role); - /* Marshall description */ - const char* description = NULL; - description = efl_access_description_get(data); - if (!description) - description = ""; - eldbus_message_iter_basic_append(iter_struct, 's', description); + /* Marshall description */ + const char* description = NULL; + description = efl_access_description_get(data); + if (!description) + description = ""; + eldbus_message_iter_basic_append(iter_struct, 's', description); - /* Marshall state set */ - iter_sub_array = eldbus_message_iter_container_new(iter_struct, 'a', "u"); - EINA_SAFETY_ON_NULL_GOTO(iter_sub_array, fail); + /* Marshall state set */ + iter_sub_array = eldbus_message_iter_container_new(iter_struct, 'a', "u"); + EINA_SAFETY_ON_NULL_GOTO(iter_sub_array, fail); - states = efl_access_state_set_get(data); + states = efl_access_state_set_get(data); - unsigned int s1 = states & 0xFFFFFFFF; - unsigned int s2 = (states >> 32) & 0xFFFFFFFF; - eldbus_message_iter_basic_append(iter_sub_array, 'u', s1); - eldbus_message_iter_basic_append(iter_sub_array, 'u', s2); + unsigned int s1 = states & 0xFFFFFFFF; + unsigned int s2 = (states >> 32) & 0xFFFFFFFF; + eldbus_message_iter_basic_append(iter_sub_array, 'u', s1); + eldbus_message_iter_basic_append(iter_sub_array, 'u', s2); - eldbus_message_iter_container_close(iter_struct, iter_sub_array); - eldbus_message_iter_container_close(iter_array, iter_struct); + eldbus_message_iter_container_close(iter_struct, iter_sub_array); + eldbus_message_iter_container_close(iter_array, iter_struct); - return EINA_TRUE; + return EINA_TRUE; fail: - if (iter_struct) eldbus_message_iter_del(iter_struct); - return EINA_TRUE; + if (iter_struct) eldbus_message_iter_del(iter_struct); + return EINA_TRUE; } static Eldbus_Message * @@ -4241,33 +4253,7 @@ static unsigned int vector_size(vector *v) #define CALL(fncname, ...) table->fncname(table, __VA_ARGS__) static unsigned char _accept_object_check_role(accessibility_navigation_pointer_table *table, void *obj) { - AtspiRole role = CALL(object_get_role, obj); - switch (role) - { - case ATSPI_ROLE_APPLICATION: - case ATSPI_ROLE_FILLER: - case ATSPI_ROLE_SCROLL_PANE: - case ATSPI_ROLE_SPLIT_PANE: - case ATSPI_ROLE_WINDOW: - case ATSPI_ROLE_IMAGE: - case ATSPI_ROLE_LIST: - case ATSPI_ROLE_ICON: - case ATSPI_ROLE_TOOL_BAR: - case ATSPI_ROLE_REDUNDANT_OBJECT: - case ATSPI_ROLE_COLOR_CHOOSER: - case ATSPI_ROLE_TREE_TABLE: - case ATSPI_ROLE_PAGE_TAB_LIST: - case ATSPI_ROLE_PAGE_TAB: - case ATSPI_ROLE_SPIN_BUTTON: - case ATSPI_ROLE_INPUT_METHOD_WINDOW: - case ATSPI_ROLE_EMBEDDED: - case ATSPI_ROLE_INVALID: - case ATSPI_ROLE_NOTIFICATION: - return 0; - default: - break; - } - return 1; + return _elm_widget_atspi_role_acceptable_check(obj); } static unsigned char _state_set_is_set(uint64_t state_set, AtspiStateType state) @@ -5244,15 +5230,17 @@ _registered_listeners_get(void *data, const Eldbus_Message *msg, Eldbus_Pending if (!pd->connected) { Eo *root, *pr; + //TIZEN_ONLY(20170910) atspi: emit signal after atspi bridge is connected pd->connected = EINA_TRUE; efl_event_callback_legacy_call(data, ELM_ATSPI_BRIDGE_EVENT_CONNECTED, NULL); + _elm_win_atspi(EINA_TRUE); + // // buid cache root = elm_obj_atspi_bridge_root_get(data); _bridge_cache_build(data, root); // initialize pending proxy - Eo *pr; EINA_LIST_FREE(pd->socket_queue, pr) _socket_ifc_create(pd->a11y_bus, pr); EINA_LIST_FREE(pd->plug_queue, pr) @@ -5531,6 +5519,33 @@ _move_outed_signal_send(void *data, const Efl_Event *event) } // +static unsigned int +_window_activated_detail_value_add(Eo *obj) +{ + unsigned int ret = EFL_ACCESS_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED; + Eina_List *l, *attr_list = NULL; + Efl_Access_Attribute *attr = NULL; + + attr_list = efl_access_attributes_get(obj); + EINA_LIST_FOREACH(attr_list, l, attr) + { + if (!strcmp(attr->key, "default_label") && !strcmp(attr->value, "disabled")) + { + ret |= EFL_ACCESS_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_DISABLED; + break; + } + } + if (attr_list) + efl_access_attributes_list_free(attr_list); + + Efl_Access_Role role = EFL_ACCESS_ROLE_INVALID; + role = efl_access_role_get(obj); + if (role == EFL_ACCESS_ROLE_INPUT_METHOD_WINDOW) + ret |= EFL_ACCESS_WINDOW_ACTIVATE_INFO_KEYBOARD; + + return ret; +} + static void _window_signal_send(void *data, const Efl_Event *event) { @@ -5570,9 +5585,14 @@ _window_signal_send(void *data, const Efl_Event *event) efl_event_callback_stop(event->object); return; } + //TIZEN_ONLY(20170925) atspi: send detail value for window activated signal + unsigned int det1 = 0; + if (event->desc == EFL_ACCESS_WINDOW_EVENT_WINDOW_ACTIVATED) + det1 = _window_activated_detail_value_add(event->object); + // _bridge_signal_send(data, event->object, ATSPI_DBUS_INTERFACE_EVENT_WINDOW, - &_window_obj_signals[type], "", 0, 0, "i", 0); + &_window_obj_signals[type], "", det1, 0, "i", 0); } static void @@ -5843,14 +5863,12 @@ _bridge_cache_build(Eo *bridge, void *obj) { if (STATE_TYPE_GET(ss, EFL_ACCESS_STATE_ACTIVE)) { - efl_access_window_activated_signal_emit(obj); // TIZEN_ONLY(20160802): do not handle events if the window is not activated pd->window_activated = EINA_TRUE; // } else { - efl_access_window_deactivated_signal_emit(obj); // TIZEN_ONLY(20160802): do not handle events if the window is not activated pd->window_activated = EINA_FALSE; // @@ -6140,7 +6158,10 @@ _at_spi_client_enabled_get(void *data, const Eldbus_Message *msg, Eldbus_Pending if (is_enabled) _a11y_connection_init(data); else - DBG("AT-SPI2 stack not enabled."); + { + _elm_win_atspi(is_enabled); + DBG("AT-SPI2 stack not enabled."); + } } // @@ -6189,7 +6210,6 @@ _elm_atspi_bridge_shutdown(void) if (_a11y_socket_address) eina_stringshare_del(_a11y_socket_address); _a11y_socket_address = NULL; - // _efl_access_shutdown(); } @@ -6422,10 +6442,16 @@ _properties_changed_cb(void *data, Eldbus_Proxy *proxy EINA_UNUSED, void *event) ERR("Unable to get " A11Y_DBUS_ENABLED_PROPERTY " property value"); return; } + + _elm_win_atspi(val); + if (val) _a11y_connection_init(bridge); else - _a11y_connection_shutdown(bridge); + { + _elm_win_atspi(EINA_FALSE); + _a11y_connection_shutdown(bridge); + } } // } diff --git a/src/lib/elementary/elm_atspi_ewk_wrapper.c b/src/lib/elementary/elm_atspi_ewk_wrapper.c index 1f9e665..fd23f9f 100644 --- a/src/lib/elementary/elm_atspi_ewk_wrapper.c +++ b/src/lib/elementary/elm_atspi_ewk_wrapper.c @@ -169,7 +169,7 @@ _elm_atspi_ewk_wrapper_a11y_init(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, // In order to avoid situation when ewk a11y may be accessed from different // a11y node we check if reparenting occured and reset wrapper parent if (parent != elm_widget_parent_get(wrapper)) { - elm_obj_widget_sub_object_add(parent, wrapper); + elm_widget_sub_object_add(parent, wrapper); } } elm_atspi_ewk_wrapper_connection_init(wrapper); diff --git a/src/lib/elementary/elm_atspi_proxy.c b/src/lib/elementary/elm_atspi_proxy.c index f8be371..a127f3b 100644 --- a/src/lib/elementary/elm_atspi_proxy.c +++ b/src/lib/elementary/elm_atspi_proxy.c @@ -7,6 +7,9 @@ #include #include "elm_widget.h" #include "elm_priv.h" +//TIZEN_ONLY(20171222): include headerfile for eo info +#include "elm_widget_ctxpopup.h" +// static Eina_List *_socket_list; @@ -162,4 +165,14 @@ _elm_atspi_proxy_socket_list_get(void) return eina_list_clone(_socket_list); } +EOLIAN static void +_elm_atspi_proxy_elm_widget_atspi(Eo *obj, Elm_Atspi_Proxy_Data *_pd, Eina_Bool is_atspi) +{ + EINA_SAFETY_ON_NULL_RETURN(obj); + if (is_atspi && _pd->type == ELM_ATSPI_PROXY_TYPE_PLUG) + { + elm_atspi_bridge_utils_proxy_connect(obj); + } +} + #include "elm_atspi_proxy.eo.c" diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index 89d33b7..cca2e67 100644 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -9,6 +9,7 @@ #define EFL_ACCESS_SELECTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define ELM_WIDGET_ITEM_PROTECTED +#define EFL_ACCESS_BRIDGE_PROTECTED #define EFL_UI_FOCUS_COMPOSITION_PROTECTED #include diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c index 586efe6..535a8a0 100644 --- a/src/lib/elementary/elm_hover.c +++ b/src/lib/elementary/elm_hover.c @@ -302,7 +302,6 @@ EOLIAN static Efl_Ui_Theme_Apply _elm_hover_elm_widget_theme_apply(Eo *obj, Elm_Hover_Data *sd) { Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED; - int_ret = elm_obj_widget_theme_apply(efl_super(obj, MY_CLASS)); int_ret = efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS)); if (!int_ret) return EFL_UI_THEME_APPLY_FAILED; diff --git a/src/lib/elementary/elm_label.c b/src/lib/elementary/elm_label.c index b678301..9a15b19 100644 --- a/src/lib/elementary/elm_label.c +++ b/src/lib/elementary/elm_label.c @@ -770,7 +770,7 @@ _elm_label_text_style_user_push(Eo *obj, Elm_Label_Data *sd, const char *style) { if (!eina_stringshare_replace(&sd->text_style_user, style)) return; - elm_obj_widget_theme_apply(obj); + efl_ui_widget_theme_apply(obj); } EOLIAN static void @@ -782,7 +782,7 @@ _elm_label_text_style_user_pop(Eo *obj, Elm_Label_Data *sd) sd->text_style_user = NULL; } - elm_obj_widget_theme_apply(obj); + efl_ui_widget_theme_apply(obj); } EOLIAN static const char * diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index 02ceaae..8674a54 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -3977,7 +3977,6 @@ _elm_toolbar_efl_access_state_set_get(Eo *obj, Elm_Toolbar_Data *sd EINA_UNUSED) } // TIZEN_ONLY(20171114): Add accessibility highlight for toolbar items f919df709e670600fcea71c3001a5ce5221b61e0 - EOLIAN static Eina_Bool _elm_toolbar_item_efl_access_component_highlight_grab(Eo *eo_it, Elm_Toolbar_Item_Data *it) { diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h index 8e4907f..9c53f9f 100644 --- a/src/lib/elementary/elm_widget.h +++ b/src/lib/elementary/elm_widget.h @@ -421,11 +421,6 @@ typedef struct _Elm_Widget_Smart_Data Eina_Inlist *translate_strings; Eina_List *focus_chain; Eina_List *event_cb; - const char *description; /**< Accessibility description */ - //TIZEN_ONLY(20150731) : add i18n support for name and description - const char *atspi_translation_domain; - /// - /* this is a hook to be set on-the-fly on widgets. this is code * handling the request of showing a specific region from an inner * widget (mainly issued by entries, on cursor moving) */ @@ -658,10 +653,6 @@ struct _Elm_Widget_Item_Data Eina_List *signals; Eina_Hash *labels; Evas_Object *track_obj; - const char *description; /**< Accessibility description */ - //TIZEN_ONLY(20150731) : add i18n support for name and description - const char *atspi_translation_domain; - /// Eina_Bool disabled : 1; Eina_Bool on_deletion : 1; @@ -679,7 +670,13 @@ EAPI Eina_Bool elm_widget_api_check(int ver); EAPI Eina_Bool elm_widget_access(Evas_Object *obj, Eina_Bool is_access); //TIZEN_ONLY(20160822): When atspi mode is dynamically switched on/off, //register/unregister access objects accordingly. -EAPI Eina_Bool elm_widget_screen_reader(Evas_Object *obj, Eina_Bool is_screen_reader); +// TIZEN_ONLY(20170516): connect to at-spi dbus based on org.a11y.Status.IsEnabled property +EAPI Eina_Bool elm_widget_screen_reader(Evas_Object *obj, Eina_Bool is_access); +EAPI Eina_Bool elm_widget_atspi(Evas_Object *obj, Eina_Bool is_atspi); +//TIZEN_ONLY(20170621) handle atspi proxy connection at runtime +EAPI Eo *elm_widget_atspi_plug_type_proxy_get(Evas_Object *obj); +// +// // EAPI Efl_Ui_Theme_Apply elm_widget_theme(Evas_Object *obj); EAPI void elm_widget_theme_specific(Evas_Object *obj, Elm_Theme *th, Eina_Bool force); @@ -813,6 +810,10 @@ EAPI Eina_Bool _elm_widget_item_onscreen_is(Elm_Object_Item *item); const char* _elm_widget_accessible_plain_name_get(Evas_Object *obj, const char* name); const char* _elm_widget_item_accessible_plain_name_get(Elm_Object_Item *item, const char* name); +//TIZEN_ONLY(20170905): find valid child of list item +Eina_Bool _elm_widget_atspi_role_acceptable_check(Eo *obj); +// + Efl_Canvas_Object * _efl_ui_widget_bg_get(Elm_Widget *obj); #define ELM_WIDGET_DATA_GET_OR_RETURN(o, ptr, ...) \ -- 2.7.4