[atspi][panel] Adds accessibility support for the panel widget. 47/147647/3
authorJunsuChoi <jsuya.choi@samsung.com>
Wed, 9 Aug 2017 07:41:47 +0000 (16:41 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Wed, 6 Sep 2017 03:02:00 +0000 (12:02 +0900)
   Panel handles similar popups.
   When open or close it sends signal to screen-reader.

Change-Id: Ie0d8e122810e2de23f14321d0211be7b0efd8cad

src/lib/elm_atspi_bridge.c
src/lib/elm_panel.c
src/lib/elm_panel.eo

index 10227f38799a152b0ecb2035bb89606ffa9f9f32..6d5dca651750c3548f148e474fd618155e4cc817 100644 (file)
@@ -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:
index cdbb848b066eecdc26c14adf778e3f090bcb8d19..d2280c78b53caca7e1ba920cef8db2cab17edfdc 100644 (file)
@@ -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"
index da03c0d54b42a8463681e22a734eefc01c513c06..feeb48e946e4373e498f78ab04065d0e86c8c90a 100644 (file)
@@ -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;