diff --git a/legacy/evas/ChangeLog b/legacy/evas/ChangeLog index baac65651e..3949decdab 100644 --- a/legacy/evas/ChangeLog +++ b/legacy/evas/ChangeLog @@ -805,8 +805,3 @@ * Fix crash in evas_object_image_add() when called prior to setting an engine for the given canvas. - -2012-06-13 ChunEon Park (Hermet) - - * Fixed incorrect events passing. Now child's repeat events does not affect to the parent's level. - diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c index b86c536d8c..02799c3c73 100644 --- a/legacy/evas/src/lib/canvas/evas_events.c +++ b/legacy/evas/src/lib/canvas/evas_events.c @@ -43,13 +43,14 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in, (!obj->clip.clipees) && (evas_object_clippers_is_visible(obj))) { - inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); - if (obj->smart.smart) { + int norep = 0; + if ((obj->cur.usemap) && (obj->cur.map) && (obj->cur.map->count == 4)) { + inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); if (inside) { if (!evas_map_coords_get(obj->cur.map, x, y, @@ -66,7 +67,7 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in, stop, obj->cur.geometry.x + obj->cur.map->mx, obj->cur.geometry.y + obj->cur.map->my, - no_rep); + &norep); } } } @@ -85,32 +86,33 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in, obj->cur.geometry.y + obj->cur.geometry.h >= y)) in = _evas_event_object_list_in_get (e, in, evas_object_smart_members_get_direct(obj), - stop, x, y, no_rep); + stop, x, y, &norep); + } + if (norep) + { + if (!obj->repeat_events) + { + *no_rep = 1; + return in; + } } - - if (inside && ((!obj->precise_is_inside) || - (evas_object_is_inside(obj, x, y)))) - if (!obj->repeat_events) - { - *no_rep = 1; - return in; - } } else { - if (inside) + inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); + + if ((obj->cur.usemap) && (obj->cur.map) && + (obj->cur.map->count == 4)) { - if ((obj->cur.usemap) && (obj->cur.map) && - (obj->cur.map->count == 4)) + if ((inside) && + (!evas_map_coords_get(obj->cur.map, x, y, + &(obj->cur.map->mx), + &(obj->cur.map->my), 0))) { - if (!evas_map_coords_get(obj->cur.map, x, y, - &(obj->cur.map->mx), - &(obj->cur.map->my), 0)) - { - inside = 0; - } + inside = 0; } } + if (inside && ((!obj->precise_is_inside) || (evas_object_is_inside(obj, x, y)))) {