From 2589428c1a3d8df2020847a69b43241bfb08ace0 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Wed, 13 Dec 2017 14:44:40 +0530 Subject: [PATCH] atspi : During the highlight grab, out signal is not sent. There is an action that takes time to complete the highlight grab, such as scroll bring in. So the highlight box can be outside the screen. After the highlight grab process is completed, will check the highlight box status. Change-Id: Ib114183209239f099ec7c1d081291f8953285562 Signed-off-by: Shilpa Singh --- src/lib/elementary/efl_ui_win.c | 42 ++++++++++++++++++++++------------------- src/lib/elementary/elm_widget.c | 34 +++++++++++++++++++++++++++++++++ src/lib/elementary/elm_widget.h | 8 ++++++++ 3 files changed, 65 insertions(+), 19 deletions(-) diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index da00066..dda5dbe 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -1195,29 +1195,33 @@ _elm_win_accessibility_highlight_simple_setup(Efl_Ui_Win_Data *sd, //TIZEN_ONLY(20160623): atspi: moved highlight when object is out of screen evas_object_geometry_get(target, &ox, &oy, NULL, NULL); - - if (((w < 0 && ox > sd->accessibility_highlight.cur.x) || (h < 0 && oy < sd->accessibility_highlight.cur.y)) - && sd->accessibility_highlight.cur.need_moved - && efl_isa(target, EFL_ACCESS_MIXIN)) + //TIZEN_ONLY(20171011) : atspi : During the highlight grab, out signal is not sent. + if (!_elm_widget_accessibility_highlight_grabbing_get(target)) + // { - role = efl_access_role_get(target); - if (role && role != EFL_ACCESS_ROLE_MENU_ITEM && role != EFL_ACCESS_ROLE_LIST_ITEM) - { - efl_access_move_outed_signal_emit(target, EFL_ACCESS_MOVE_OUTED_TOP_LEFT); - sd->accessibility_highlight.cur.need_moved = EINA_FALSE; - return ; - } - } - else if (((w < 0 && ox < sd->accessibility_highlight.cur.x) || (h < 0 && oy > sd->accessibility_highlight.cur.y)) + if (((w < 0 && ox > sd->accessibility_highlight.cur.x) || (h < 0 && oy < sd->accessibility_highlight.cur.y)) && sd->accessibility_highlight.cur.need_moved && efl_isa(target, EFL_ACCESS_MIXIN)) - { - role = efl_access_role_get(target); - if (role && role != EFL_ACCESS_ROLE_MENU_ITEM && role != EFL_ACCESS_ROLE_LIST_ITEM) { - efl_access_move_outed_signal_emit(target, EFL_ACCESS_MOVE_OUTED_BOTTOM_RIGHT); - sd->accessibility_highlight.cur.need_moved = EINA_FALSE; - return ; + role = efl_access_role_get(target); + if (role && role != EFL_ACCESS_ROLE_MENU_ITEM && role != EFL_ACCESS_ROLE_LIST_ITEM) + { + efl_access_move_outed_signal_emit(target, EFL_ACCESS_MOVE_OUTED_TOP_LEFT); + sd->accessibility_highlight.cur.need_moved = EINA_FALSE; + return; + } + } + else if (((w < 0 && ox < sd->accessibility_highlight.cur.x) || (h < 0 && oy > sd->accessibility_highlight.cur.y)) + && sd->accessibility_highlight.cur.need_moved + && efl_isa(target, EFL_ACCESS_MIXIN)) + { + role = efl_access_role_get(target); + if (role && role != EFL_ACCESS_ROLE_MENU_ITEM && role != EFL_ACCESS_ROLE_LIST_ITEM) + { + efl_access_move_outed_signal_emit(target, EFL_ACCESS_MOVE_OUTED_BOTTOM_RIGHT); + sd->accessibility_highlight.cur.need_moved = EINA_FALSE; + return ; + } } } // diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 7f65f66..294b216 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -6903,6 +6903,22 @@ _accessible_highlight_region_show(Eo* obj) } // +//TIZEN_ONLY(20171011) : atspi : During the highlight grab, out signal is not sent. +Eina_Bool +_elm_widget_accessibility_highlight_grabbing_get(Eo *obj) +{ + ELM_WIDGET_DATA_GET(obj, wd); + return wd->highlight_grabbing; +} + +void +_elm_widget_accessibility_highlight_grabbing_set(Eo *obj, Eina_Bool grabbing) +{ + ELM_WIDGET_DATA_GET(obj, wd); + wd->highlight_grabbing = grabbing; +} +// + EOLIAN static Eina_Bool _elm_widget_efl_access_component_highlight_grab(Eo *obj, Elm_Widget_Smart_Data *pd EINA_UNUSED) { @@ -6910,6 +6926,10 @@ _elm_widget_efl_access_component_highlight_grab(Eo *obj, Elm_Widget_Smart_Data * if(!_elm_atspi_enabled()) return EINA_FALSE; + //TIZEN_ONLY(20171011) : atspi : During the highlight grab, out signal is not sent. + _elm_widget_accessibility_highlight_grabbing_set(obj, EINA_TRUE); + // + //TIZEN_ONLY(20170119): Show the object highlighted by highlight_grab when the object is completely out of the scroll _accessible_highlight_region_show(obj); // @@ -6917,9 +6937,14 @@ _elm_widget_efl_access_component_highlight_grab(Eo *obj, Elm_Widget_Smart_Data * elm_widget_focus_region_show(obj); elm_object_accessibility_highlight_set(obj, EINA_TRUE); efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_HIGHLIGHTED, EINA_TRUE); + // TIZEN_ONLY(20161018): add highlighted/unhighlighted signal for atspi evas_object_smart_callback_call(obj, SIG_WIDGET_ATSPI_HIGHLIGHTED, NULL); // + + //TIZEN_ONLY(20171011) : atspi : During the highlight grab, out signal is not sent. + _elm_widget_accessibility_highlight_grabbing_set(obj, EINA_FALSE); + // return EINA_TRUE; } @@ -6952,6 +6977,10 @@ _elm_widget_item_efl_access_component_highlight_grab(Eo *obj, Elm_Widget_Item_Da if (!sd) return EINA_FALSE; if (!sd->view) return EINA_FALSE; + //TIZEN_ONLY(20171011) : atspi : During the highlight grab, out signal is not sent. + _elm_widget_accessibility_highlight_grabbing_set(obj, EINA_TRUE); + // + //TIZEN_ONLY(20170119): Show the object highlighted by highlight_grab when the object is completely out of the scroll _accessible_highlight_region_show(sd->view); // @@ -6964,6 +6993,11 @@ _elm_widget_item_efl_access_component_highlight_grab(Eo *obj, Elm_Widget_Item_Da //TIZEN_ONLY(20170412) Make atspi,(un)highlighted work on widget item evas_object_smart_callback_call(sd->widget, SIG_WIDGET_ATSPI_HIGHLIGHTED, obj); // + + //TIZEN_ONLY(20171011) : atspi : During the highlight grab, out signal is not sent. + _elm_widget_accessibility_highlight_grabbing_set(obj, EINA_FALSE); + // + return EINA_TRUE; // } diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h index 7f01566..8e4907f 100644 --- a/src/lib/elementary/elm_widget.h +++ b/src/lib/elementary/elm_widget.h @@ -474,6 +474,9 @@ typedef struct _Elm_Widget_Smart_Data ///TIZEN_ONLY(20170717) : expose highlight information on atspi Eina_Bool can_highlight : 1; /**< true if widget have at-spi HIGHLIGHTABLE state */ /// + //TIZEN_ONLY(20171011) : atspi : During the highlight grab, out signal is not sent. + Eina_Bool highlight_grabbing : 1; + // } Elm_Widget_Smart_Data; typedef Elm_Widget_Smart_Data Efl_Ui_Widget_Data; @@ -572,6 +575,11 @@ Evas_Object *_elm_win_default_label_obj_get(Evas_Object *obj); void *_elm_object_accessibility_currently_highlighted_get(); // +//TIZEN_ONLY(20171011) : atspi : During the highlight grab, out signal is not sent. +Eina_Bool _elm_widget_accessibility_highlight_grabbing_get(Eo *obj); +void _elm_widget_accessibility_highlight_grabbing_set(Eo *obj, Eina_Bool grabbing); +// + EAPI void _elm_access_clear(Elm_Access_Info *ac); EAPI void _elm_access_text_set(Elm_Access_Info *ac, int type, const char *text); EAPI void _elm_access_callback_set(Elm_Access_Info *ac, int type, Elm_Access_Info_Cb func, const void *data); -- 2.7.4