forked from enlightenment/efl
evas/event - clean the code and do stop when evas event is frozen.
SVN revision: 78591
This commit is contained in:
parent
e48939bb65
commit
8554315234
|
@ -2186,44 +2186,40 @@ _canvas_event_feed_mouse_out(Eo *eo_e, void *_pd, va_list *list)
|
||||||
ev.event_flags = e->default_event_flags;
|
ev.event_flags = e->default_event_flags;
|
||||||
ev.dev = _evas_device_top_get(eo_e);
|
ev.dev = _evas_device_top_get(eo_e);
|
||||||
if (ev.dev) _evas_device_ref(ev.dev);
|
if (ev.dev) _evas_device_ref(ev.dev);
|
||||||
|
|
||||||
_evas_walk(e);
|
_evas_walk(e);
|
||||||
/* if our mouse button is inside any objects */
|
/* if our mouse button is inside any objects */
|
||||||
{
|
/* go thru old list of in objects */
|
||||||
/* go thru old list of in objects */
|
Eina_List *l, *copy;
|
||||||
Eina_List *l, *copy;
|
Evas_Object *eo_obj;
|
||||||
Evas_Object *eo_obj;
|
|
||||||
|
|
||||||
copy = evas_event_list_copy(e->pointer.object.in);
|
copy = evas_event_list_copy(e->pointer.object.in);
|
||||||
EINA_LIST_FOREACH(copy, l, eo_obj)
|
EINA_LIST_FOREACH(copy, l, eo_obj)
|
||||||
|
{
|
||||||
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
|
if (!obj->mouse_in) continue;
|
||||||
|
obj->mouse_in = 0;
|
||||||
|
if (!obj->delete_me)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
ev.canvas.x = e->pointer.x;
|
||||||
if (!obj->mouse_in) continue;
|
ev.canvas.y = e->pointer.y;
|
||||||
obj->mouse_in = 0;
|
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
|
||||||
if ((!obj->delete_me) && (!e->is_frozen))
|
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
|
||||||
{
|
obj->mouse_grabbed);
|
||||||
ev.canvas.x = e->pointer.x;
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
ev.canvas.y = e->pointer.y;
|
EVAS_CALLBACK_MOUSE_OUT, &ev,
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
|
event_id);
|
||||||
&ev.canvas.y);
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
|
_evas_event_source_mouse_out_events(eo_obj, eo_e, &ev, event_id);
|
||||||
&ev.canvas.y, obj->mouse_grabbed);
|
if (e->delete_me || e->is_frozen) break;
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
|
||||||
EVAS_CALLBACK_MOUSE_OUT,
|
|
||||||
&ev, event_id);
|
|
||||||
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
|
||||||
_evas_event_source_mouse_out_events(eo_obj, eo_e, &ev,
|
|
||||||
event_id);
|
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
|
||||||
obj->mouse_grabbed = 0;
|
|
||||||
}
|
}
|
||||||
if (copy) copy = eina_list_free(copy);
|
obj->mouse_grabbed = 0;
|
||||||
/* free our old list of ins */
|
|
||||||
e->pointer.object.in = eina_list_free(e->pointer.object.in);
|
|
||||||
e->pointer.mouse_grabbed = 0;
|
|
||||||
_evas_post_event_callback_call(eo_e, e);
|
|
||||||
}
|
}
|
||||||
|
if (copy) copy = eina_list_free(copy);
|
||||||
|
/* free our old list of ins */
|
||||||
|
e->pointer.object.in = eina_list_free(e->pointer.object.in);
|
||||||
|
e->pointer.mouse_grabbed = 0;
|
||||||
|
_evas_post_event_callback_call(eo_e, e);
|
||||||
if (ev.dev) _evas_device_unref(ev.dev);
|
if (ev.dev) _evas_device_unref(ev.dev);
|
||||||
_evas_unwalk(e);
|
_evas_unwalk(e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue