atspi: Use bottom up approach for PAGE_TAB 24/160424/1
authorShinwoo Kim <cinoo.kim@samsung.com>
Mon, 6 Nov 2017 12:04:13 +0000 (21:04 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Thu, 16 Nov 2017 06:04:08 +0000 (15:04 +0900)
The naviframe item is elm_layout, and its atspi role is ELM_ATSPI_ROLE_PAGE_TAB.
The screen-reader could ask an object at point by using the naviframe item as a
root object. In this case, elementary did not us bottom up approach.
For the consistency, and to make it work better, This patch set is using the
bottom up approach for the naviframe item.

Change-Id: Icfe0791e340dac0c3998b56217fab8c34922cc5b

src/lib/elc_multibuttonentry.c
src/lib/elm_dayselector.c
src/lib/elm_widget.c

index 06e534edd33b026f049e749461fb7df10c426e47..cee4e46e3eb0dcee2ccfbc4025870bb64a5e9831 100644 (file)
@@ -1918,7 +1918,7 @@ _elm_multibuttonentry_eo_base_constructor(Eo *obj, Elm_Multibuttonentry_Data *sd
    eo_do(obj,
          evas_obj_type_set(MY_CLASS_NAME_LEGACY),
          evas_obj_smart_callbacks_descriptions_set(_smart_callbacks),
-         elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PANEL));
+         elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_FILLER));
 
    return obj;
 }
index fce1b222584de0d52868d8d8f9299a45a5d98bcc..c6db977b2d489659e78c3cb7a74737a581190ff9 100644 (file)
@@ -465,7 +465,7 @@ _elm_dayselector_eo_base_constructor(Eo *obj, Elm_Dayselector_Data *_pd EINA_UNU
    eo_do(obj,
          evas_obj_type_set(MY_CLASS_NAME_LEGACY),
          evas_obj_smart_callbacks_descriptions_set(_smart_callbacks),
-         elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PANEL));
+         elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_FILLER));
 
    return obj;
 }
index 2850f5bb52852d5abe7110a9b4b2f214ecb78343..83f5f3a4eabb686435fc7a8fb6a879a06a6f3c7e 100644 (file)
@@ -7579,13 +7579,26 @@ static Eo *_item_at_point_get(Evas_Object *obj, int x, int y)
 EOLIAN static Eo *
 _elm_widget_elm_interface_atspi_component_accessible_at_point_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, Eina_Bool screen_coords, int x, int y)
 {
+   Elm_Atspi_Role role;
    Eina_List *l;
    Evas_Object *stack_item;
 
-   if(strcmp("Elm_Win", eo_class_name_get(eo_class_get(obj))) &&
-      strcmp("Elm_Popup", eo_class_name_get(eo_class_get(obj))) &&
-      strcmp("Elm_Panel", eo_class_name_get(eo_class_get(obj))))
-     return _accessible_at_point_top_down_get(obj, _pd, screen_coords, x, y);
+   eo_do(obj, role = elm_interface_atspi_accessible_role_get());
+
+   switch (role)
+     {
+      case ELM_ATSPI_ROLE_WINDOW:
+      case ELM_ATSPI_ROLE_INPUT_METHOD_WINDOW:
+      case ELM_ATSPI_ROLE_DIALOG:
+      case ELM_ATSPI_ROLE_PAGE_TAB:
+      case ELM_ATSPI_ROLE_POPUP_MENU:
+      case ELM_ATSPI_ROLE_PANEL:
+        DBG("Find accessible from bottom");
+        break;
+
+      default:
+        return _accessible_at_point_top_down_get(obj, _pd, screen_coords, x, y);
+     }
 
    _coordinate_system_based_point_translate(obj, screen_coords, &x, &y);
 
@@ -7609,7 +7622,6 @@ _elm_widget_elm_interface_atspi_component_accessible_at_point_get(Eo *obj, Elm_W
                {
                   Eina_Bool acceptable = EINA_FALSE;
                   Eo *item_child;
-                  Elm_Atspi_Role role;
                   eo_do(smart_parent, role = elm_interface_atspi_accessible_role_get());
                   switch (role)
                     {