jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=5130ce98dbd8384fd12cbcc13c5b9056d66e8adb
commit 5130ce98dbd8384fd12cbcc13c5b9056d66e8adb Author: Jean-Philippe Andre <[email protected]> Date: Wed Aug 10 13:52:26 2016 +0900 evas: Fix evas_objects_at_xy_get() for smart objects Due to the way the clip geometry calculation changed (see 25d77bc1d24d9fd539c681fa58db976c1ca65051) to be based on the bounding box rather than the raw geometry of smart objects, the internal function evas_object_is_in_output_rect() now returns true if the rectangle intersects with that bounding box, even if it's outside the raw geometry. This breaks the drop area in E's pager, as it relies on evas_objects_at_xy_get() to find which objects are at this point. What I saw on my desktop was that only the lower 10 or 20 pixels were droppable in the pager, as maximized windows would have shadows covering the upper 20 pixels or so. Arguably objects_at_xy_get could also return all objects at (x,y) including smart objects that extend beyong their geometry. This can be added as a flag in the EO API, but not in the legacy API. --- src/lib/evas/canvas/evas_object_main.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index c58c61c..f1421fa 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -2035,7 +2035,17 @@ _evas_canvas_objects_at_xy_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Evas_C evas_object_clip_recalc(obj); if ((evas_object_is_in_output_rect(eo_obj, obj, xx, yy, 1, 1)) && (!obj->clip.clipees)) - in = eina_list_prepend(in, eo_obj); + { + // evas_object_is_in_output_rect is based on the clip which + // may be larger than the geometry (bounding box) + if (!RECTS_INTERSECT(xx, yy, 1, 1, + 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; --
