From: Lukasz Stanislawski Date: Tue, 14 Nov 2017 12:04:15 +0000 (+0100) Subject: elm: atspi: improve accessible_at_point API X-Git-Tag: submit/sandbox/upgrade/efl120/20180319.053334~937 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0b211cd56fe004c5f01889bc8fc09f34bc9f0d48;p=platform%2Fupstream%2Fefl.git elm: atspi: improve accessible_at_point API 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 --- diff --git a/src/lib/elementary/efl_access_component.c b/src/lib/elementary/efl_access_component.c index f016354..4739a1c 100644 --- a/src/lib/elementary/efl_access_component.c +++ b/src/lib/elementary/efl_access_component.c @@ -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) { diff --git a/src/lib/elementary/elm_bg.c b/src/lib/elementary/elm_bg.c index 79fb4f5..20b7bc4 100644 --- a/src/lib/elementary/elm_bg.c +++ b/src/lib/elementary/elm_bg.c @@ -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; }