atspi: Use bottom up approach for PAGE_TAB 27/159027/7
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 07:06:02 +0000 (07:06 +0000)
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 c017b28..14686f0 100644 (file)
@@ -1932,7 +1932,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 fce1b22..c6db977 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 ab47a74..ebf6e64 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)
                     {