From: JunsuChoi Date: Wed, 9 Aug 2017 07:41:47 +0000 (+0900) Subject: [atspi][panel] Adds accessibility support for the panel widget. X-Git-Tag: submit/tizen_3.0/20171019.130042~40 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f5dfd66765055f8354275ae043288ff04cea222c;p=platform%2Fupstream%2Felementary.git [atspi][panel] Adds accessibility support for the panel widget. Panel handles similar popups. When open or close it sends signal to screen-reader. Change-Id: Ie0d8e122810e2de23f14321d0211be7b0efd8cad --- diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c index 10227f387..6d5dca651 100644 --- a/src/lib/elm_atspi_bridge.c +++ b/src/lib/elm_atspi_bridge.c @@ -4170,7 +4170,6 @@ static unsigned char _accept_object_check_role(accessibility_navigation_pointer_ case ATSPI_ROLE_TOOL_BAR: case ATSPI_ROLE_REDUNDANT_OBJECT: case ATSPI_ROLE_COLOR_CHOOSER: - case ATSPI_ROLE_PANEL: case ATSPI_ROLE_TREE_TABLE: case ATSPI_ROLE_PAGE_TAB_LIST: case ATSPI_ROLE_PAGE_TAB: diff --git a/src/lib/elm_panel.c b/src/lib/elm_panel.c index cdbb848b0..d2280c78b 100644 --- a/src/lib/elm_panel.c +++ b/src/lib/elm_panel.c @@ -131,6 +131,16 @@ _access_obj_process(Evas_Object *obj, Eina_Bool is_access) } } +// TIZEN_ONLY(20170829): [atspi][panel] Adds accessibility support for the panel widget. +static void +_accessible_panel_hidden_set(Evas_Object* obj, Eina_Bool is_hidden) +{ + is_hidden = !!is_hidden; + elm_atspi_accessible_can_highlight_set(obj, !is_hidden); + elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_SHOWING, !is_hidden); +} +// + static void _orient_set_do(Evas_Object *obj) { @@ -402,6 +412,10 @@ _drawer_open(Evas_Object *obj, Evas_Coord w, Evas_Coord h, Eina_Bool anim) else eo_do(obj, elm_interface_scrollable_content_region_show (x, y, w, h)); + + // TIZEN_ONLY(20170829): [atspi][panel] Adds accessibility support for the panel widget. + _accessible_panel_hidden_set(obj, EINA_FALSE); + // } static void @@ -466,6 +480,9 @@ _drawer_close(Evas_Object *obj, Evas_Coord w, Evas_Coord h, Eina_Bool anim) // } } + // TIZEN_ONLY(20170829) : [atspi][panel] Adds accessibility support for the panel widget. + _accessible_panel_hidden_set(obj, EINA_TRUE); + // } static void @@ -501,6 +518,9 @@ _panel_toggle(void *data EINA_UNUSED, elm_layout_signal_emit(obj, "elm,action,show", "elm"); sd->hidden = EINA_FALSE; evas_object_repeat_events_set(obj, EINA_FALSE); + // TIZEN_ONLY(20170829) : [atspi][panel] Adds accessibility support for the panel widget. + _accessible_panel_hidden_set(obj, sd->hidden); + // } else { @@ -512,6 +532,9 @@ _panel_toggle(void *data EINA_UNUSED, elm_widget_focused_object_clear(obj); elm_widget_focus_steal(obj, NULL); } + // TIZEN_ONLY(20170829) : [atspi][panel] Adds accessibility support for the panel widget. + _accessible_panel_hidden_set(obj, sd->hidden); + // } edje_object_message_signal_process(wd->resize_obj); @@ -1799,4 +1822,21 @@ _elm_panel_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED return &atspi_actions[0]; } +// TIZEN_ONLY(20170829) : [atspi][panel] Adds accessibility support for the panel widget. +EOLIAN static Elm_Atspi_State_Set +_elm_panel_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Panel_Data *sd EINA_UNUSED) +{ + Elm_Atspi_State_Set ret; + eo_do_super(obj, MY_CLASS, ret = elm_interface_atspi_accessible_state_set_get()); + + if (!sd->hidden) + STATE_TYPE_SET(ret, ELM_ATSPI_STATE_SHOWING); + else + STATE_TYPE_UNSET(ret, ELM_ATSPI_STATE_SHOWING); + + STATE_TYPE_SET(ret, ELM_ATSPI_STATE_MODAL); + + return ret; +} +// #include "elm_panel.eo.c" diff --git a/src/lib/elm_panel.eo b/src/lib/elm_panel.eo index da03c0d54..feeb48e94 100644 --- a/src/lib/elm_panel.eo +++ b/src/lib/elm_panel.eo @@ -125,6 +125,9 @@ class Elm.Panel (Elm.Layout, Elm_Interface_Scrollable, Elm.Widget.orientation.set; //////////////////////////////////////////////////////////// Elm_Interface_Atspi_Widget_Action.elm_actions.get; + // TIZEN_ONLY(20170829): [atspi][panel] Adds accessibility support for the panel widget. + Elm_Interface_Atspi_Accessible.state_set.get; + // } events { toggled;