elm: atspi: improve accessible_at_point API
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Tue, 14 Nov 2017 12:04:15 +0000 (13:04 +0100)
committerJiyoun Park <jy0703.park@samsung.com>
Thu, 21 Dec 2017 07:11:55 +0000 (16:11 +0900)
Now accessible at point API ignore all objects with
ELM_ATSPI_ROLE_REDUNDANT_OBJECT. This helps to ignore non-interesting
objects stacked at given cooridinates (like elm_bg)

Conflicts:
src/lib/elm_bg.c
src/lib/elm_win.c

@tizen_feature

original patch: e75f30c1ea7156d7fd4d5a6e533651e14b39269e

Change-Id: I4055287fc68e2ced681c3b7216aae62248a7d717

src/lib/elementary/efl_access_component.c
src/lib/elementary/elm_bg.c

index f016354..4739a1c 100644 (file)
@@ -78,11 +78,18 @@ _efl_access_component_accessible_at_point_get(Eo *obj, void *_pd EINA_UNUSED, Ei
 
    children = efl_access_children_get(obj);
 
-   EINA_LIST_FOREACH(children, l, child)
+   //TIZEN_ONLY (20171114) imporove object at xy get function
+   EINA_LIST_REVERSE_FOREACH(children, l, child)
+   //
      {
         Eina_Bool contains;
         if (efl_isa(child, EFL_ACCESS_COMPONENT_MIXIN))
           {
+              //TIZEN_ONLY (20171114) imporove object at xy get function
+              Efl_Access_Role role = efl_access_role_get(child);
+              if (role == EFL_ACCESS_ROLE_REDUNDANT_OBJECT)
+                continue;
+              //
               contains = efl_access_component_contains(child, screen_coords, x, y);
               if (contains)
                 {
index 79fb4f5..20b7bc4 100644 (file)
@@ -118,6 +118,9 @@ _elm_bg_efl_object_constructor(Eo *obj, Elm_Bg_Data *_pd EINA_UNUSED)
    efl_access_type_set(obj, EFL_ACCESS_TYPE_DISABLED);
    obj = efl_constructor(efl_super(obj, MY_CLASS));
    efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
+   //TIZEN_ONLY (20171114) imporove object at xy get function
+   efl_access_role_set(obj, EFL_ACCESS_ROLE_REDUNDANT_OBJECT);
+   //
 
    return obj;
 }