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;

-- 


Reply via email to