dont call mouse out or in if already in or out in evas. causing
infinite loops in edje_viewer! bad! SVN revision: 51875
This commit is contained in:
parent
2d34d6d2a3
commit
e0860db059
|
@ -450,11 +450,14 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
|||
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
|
||||
if ((!eina_list_data_find(ins, obj)) ||
|
||||
(!e->pointer.inside))
|
||||
{
|
||||
if (obj->mouse_in)
|
||||
{
|
||||
obj->mouse_in = 0;
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
_evas_post_event_callback_call(e);
|
||||
|
@ -484,11 +487,14 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
|||
ev.canvas.y = e->pointer.y;
|
||||
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
|
||||
if (!eina_list_data_find(e->pointer.object.in, obj))
|
||||
{
|
||||
if (!obj->mouse_in)
|
||||
{
|
||||
obj->mouse_in = 1;
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
_evas_post_event_callback_call(e);
|
||||
|
@ -730,6 +736,8 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
ev.canvas.y = e->pointer.y;
|
||||
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
|
||||
e->pointer.object.in = eina_list_remove(e->pointer.object.in, obj);
|
||||
if (obj->mouse_in)
|
||||
{
|
||||
obj->mouse_in = 0;
|
||||
if (!obj->delete_me)
|
||||
{
|
||||
|
@ -738,6 +746,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_evas_post_event_callback_call(e);
|
||||
}
|
||||
}
|
||||
|
@ -819,6 +828,8 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
}
|
||||
/* otherwise it has left the object */
|
||||
else
|
||||
{
|
||||
if (obj->mouse_in)
|
||||
{
|
||||
obj->mouse_in = 0;
|
||||
ev2.canvas.x = e->pointer.x;
|
||||
|
@ -827,6 +838,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
_evas_post_event_callback_call(e);
|
||||
|
@ -842,11 +854,14 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
_evas_event_havemap_adjust(obj, &ev3.canvas.x, &ev3.canvas.y);
|
||||
/* if its not in the old list of ins send an enter event */
|
||||
if (!eina_list_data_find(e->pointer.object.in, obj))
|
||||
{
|
||||
if (!obj->mouse_in)
|
||||
{
|
||||
obj->mouse_in = 1;
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
/* free our old list of ins */
|
||||
|
@ -910,11 +925,14 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
|||
ev.canvas.y = e->pointer.y;
|
||||
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
|
||||
if (!eina_list_data_find(e->pointer.object.in, obj))
|
||||
{
|
||||
if (!obj->mouse_in)
|
||||
{
|
||||
obj->mouse_in = 1;
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
/* free our old list of ins */
|
||||
|
@ -978,12 +996,15 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
|||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
|
||||
if (obj->mouse_in)
|
||||
{
|
||||
obj->mouse_in = 0;
|
||||
if (!obj->delete_me)
|
||||
{
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
if (copy) copy = eina_list_free(copy);
|
||||
|
|
Loading…
Reference in New Issue