discomfitor pushed a commit to branch efl-1.20. http://git.enlightenment.org/core/efl.git/commit/?id=83523924220cc1889ebe8882e5ccf487348704f2
commit 83523924220cc1889ebe8882e5ccf487348704f2 Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Fri Aug 18 15:24:51 2017 -0400 evas: make top object returning functions return the top object this previously just returned the top clipper at the specified points @fix --- src/lib/evas/canvas/evas_object_main.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index e0a3013edf..621d0b5224 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -2224,7 +2224,11 @@ _evas_canvas_object_top_at_xy_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Eva if ((!include_hidden_objects) && (!obj->cur->visible)) continue; evas_object_clip_recalc(obj); if ((evas_object_is_in_output_rect(eo_obj, obj, xx, yy, 1, 1)) && - (!obj->clip.clipees)) return eo_obj; + (!obj->clip.clipees) && + RECTS_INTERSECT(xx, yy, 1, 1, + obj->cur->geometry.x, obj->cur->geometry.y, + obj->cur->geometry.w, obj->cur->geometry.h)) + return eo_obj; } } return NULL; @@ -2273,7 +2277,10 @@ _evas_canvas_object_top_in_rectangle_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data if ((!include_hidden_objects) && (!obj->cur->visible)) continue; evas_object_clip_recalc(obj); if ((evas_object_is_in_output_rect(eo_obj, obj, xx, yy, ww, hh)) && - (!obj->clip.clipees)) return eo_obj; + (!obj->clip.clipees) && + RECTS_INTERSECT(xx, yy, ww, hh, + obj->cur->geometry.x, obj->cur->geometry.y, + obj->cur->geometry.w, obj->cur->geometry.h)) return eo_obj; } } return NULL; @@ -2369,7 +2376,15 @@ _evas_canvas_objects_in_rectangle_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, evas_object_clip_recalc(obj); if ((evas_object_is_in_output_rect(eo_obj, obj, xx, yy, ww, hh)) && (!obj->clip.clipees)) - in = eina_list_prepend(in, eo_obj); + { + if (!RECTS_INTERSECT(xx, yy, ww, hh, + obj->cur->geometry.x, + obj->cur->geometry.y, + obj->cur->geometry.w, + obj->cur->geometry.h)) + continue; + in = eina_list_prepend(in, eo_obj); + } } } return in; --