evas/event - Fixed incorrect events passing. Now child's repeat events does not affect to the parent's level.

SVN revision: 72080
This commit is contained in:
ChunEon Park 2012-06-13 10:19:19 +00:00
parent d228509e48
commit c513f84aa8
2 changed files with 26 additions and 23 deletions

View File

@ -805,3 +805,8 @@
* 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.

View File

@ -43,14 +43,13 @@ _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,
@ -67,7 +66,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,
&norep);
no_rep);
}
}
}
@ -86,33 +85,32 @@ _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, &norep);
}
if (norep)
{
if (!obj->repeat_events)
{
*no_rep = 1;
return in;
}
stop, x, y, no_rep);
}
if (inside && ((!obj->precise_is_inside) ||
(evas_object_is_inside(obj, x, y))))
if (!obj->repeat_events)
{
*no_rep = 1;
return in;
}
}
else
{
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 (inside)
{
if ((inside) &&
(!evas_map_coords_get(obj->cur.map, x, y,
&(obj->cur.map->mx),
&(obj->cur.map->my), 0)))
if ((obj->cur.usemap) && (obj->cur.map) &&
(obj->cur.map->count == 4))
{
inside = 0;
if (!evas_map_coords_get(obj->cur.map, x, y,
&(obj->cur.map->mx),
&(obj->cur.map->my), 0))
{
inside = 0;
}
}
}
if (inside && ((!obj->precise_is_inside) ||
(evas_object_is_inside(obj, x, y))))
{