forked from enlightenment/efl
evas/events - refactoring for optimization events handling (lazy processing)
SVN revision: 78500
This commit is contained in:
parent
f31332d6be
commit
e524d69b78
|
@ -732,28 +732,27 @@ _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data)
|
||||||
EINA_LIST_FOREACH(copy, ll, eo_obj)
|
EINA_LIST_FOREACH(copy, ll, eo_obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
ev.canvas.x = e->pointer.x;
|
if ((!eina_list_data_find(ins, eo_obj)) || (!e->pointer.inside))
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
|
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
|
|
||||||
if ((!eina_list_data_find(ins, eo_obj)) ||
|
|
||||||
(!e->pointer.inside))
|
|
||||||
{
|
{
|
||||||
if (obj->mouse_in)
|
if (!obj->mouse_in) continue;
|
||||||
|
obj->mouse_in = 0;
|
||||||
|
if (!e->is_frozen)
|
||||||
{
|
{
|
||||||
obj->mouse_in = 0;
|
ev.canvas.x = e->pointer.x;
|
||||||
if (!e->is_frozen)
|
ev.canvas.y = e->pointer.y;
|
||||||
{
|
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
&ev.canvas.y);
|
||||||
EVAS_CALLBACK_MOUSE_OUT,
|
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
|
||||||
&ev, event_id);
|
&ev.canvas.y, obj->mouse_grabbed);
|
||||||
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
_evas_event_source_mouse_out_events(eo_obj, &ev,
|
EVAS_CALLBACK_MOUSE_OUT,
|
||||||
event_id);
|
&ev, event_id);
|
||||||
}
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
|
_evas_event_source_mouse_out_events(eo_obj, &ev,
|
||||||
|
event_id);
|
||||||
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
}
|
||||||
_evas_post_event_callback_call(eo_e, e);
|
_evas_post_event_callback_call(eo_e, e);
|
||||||
|
|
||||||
|
@ -780,28 +779,28 @@ _post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data)
|
||||||
EINA_LIST_FOREACH(ins, l, eo_obj_itr)
|
EINA_LIST_FOREACH(ins, l, eo_obj_itr)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj_itr = eo_data_get(eo_obj_itr, EVAS_OBJ_CLASS);
|
Evas_Object_Protected_Data *obj_itr = eo_data_get(eo_obj_itr, EVAS_OBJ_CLASS);
|
||||||
ev_in.canvas.x = e->pointer.x;
|
|
||||||
ev_in.canvas.y = e->pointer.y;
|
|
||||||
_evas_event_framespace_adjust(eo_obj_itr, &ev_in.canvas.x, &ev_in.canvas.y);
|
|
||||||
_evas_event_havemap_adjust(eo_obj_itr, obj_itr, &ev_in.canvas.x, &ev_in.canvas.y, obj_itr->mouse_grabbed);
|
|
||||||
if (!eina_list_data_find(e->pointer.object.in, eo_obj_itr))
|
if (!eina_list_data_find(e->pointer.object.in, eo_obj_itr))
|
||||||
{
|
{
|
||||||
if (!obj_itr->mouse_in)
|
if (obj_itr->mouse_in) continue;
|
||||||
{
|
obj_itr->mouse_in = 1;
|
||||||
obj_itr->mouse_in = 1;
|
if (e->is_frozen) continue;
|
||||||
if (!e->is_frozen)
|
ev_in.canvas.x = e->pointer.x;
|
||||||
{
|
ev_in.canvas.y = e->pointer.y;
|
||||||
evas_object_event_callback_call(eo_obj_itr, obj_itr,
|
_evas_event_framespace_adjust(eo_obj_itr, &ev_in.canvas.x,
|
||||||
EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id);
|
&ev_in.canvas.y);
|
||||||
if ((obj_itr->proxy.is_proxy) &&
|
_evas_event_havemap_adjust(eo_obj_itr, obj_itr,
|
||||||
(obj_itr->proxy.src_events))
|
&ev_in.canvas.x, &ev_in.canvas.y,
|
||||||
_evas_event_source_mouse_in_events(eo_obj_itr,
|
obj_itr->mouse_grabbed);
|
||||||
&ev_in,
|
evas_object_event_callback_call(eo_obj_itr, obj_itr,
|
||||||
event_id);
|
EVAS_CALLBACK_MOUSE_IN,
|
||||||
}
|
&ev_in, event_id);
|
||||||
}
|
if ((obj_itr->proxy.is_proxy) &&
|
||||||
|
(obj_itr->proxy.src_events))
|
||||||
|
_evas_event_source_mouse_in_events(eo_obj_itr,
|
||||||
|
&ev_in,
|
||||||
|
event_id);
|
||||||
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
}
|
||||||
post_called = 1;
|
post_called = 1;
|
||||||
_evas_post_event_callback_call(eo_e, e);
|
_evas_post_event_callback_call(eo_e, e);
|
||||||
|
@ -888,10 +887,6 @@ _canvas_event_feed_mouse_up(Eo *eo_e, void *_pd, va_list *list)
|
||||||
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);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
|
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
|
|
||||||
if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) &&
|
if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) &&
|
||||||
(obj->mouse_grabbed > 0))
|
(obj->mouse_grabbed > 0))
|
||||||
{
|
{
|
||||||
|
@ -903,15 +898,22 @@ _canvas_event_feed_mouse_up(Eo *eo_e, void *_pd, va_list *list)
|
||||||
if ((!e->is_frozen) &&
|
if ((!e->is_frozen) &&
|
||||||
(!evas_event_freezes_through(eo_obj, obj)))
|
(!evas_event_freezes_through(eo_obj, obj)))
|
||||||
{
|
{
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
|
||||||
|
&ev.canvas.y);
|
||||||
|
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
|
||||||
|
&ev.canvas.y,
|
||||||
|
obj->mouse_grabbed);
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
EVAS_CALLBACK_MOUSE_UP,
|
EVAS_CALLBACK_MOUSE_UP,
|
||||||
&ev, event_id);
|
&ev, event_id);
|
||||||
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
_evas_event_source_mouse_up_events(eo_obj, &ev,
|
_evas_event_source_mouse_up_events(eo_obj, &ev,
|
||||||
event_id);
|
event_id);
|
||||||
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
|
||||||
if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
|
if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
|
||||||
{
|
{
|
||||||
if (e->pointer.nogrep > 0) e->pointer.nogrep--;
|
if (e->pointer.nogrep > 0) e->pointer.nogrep--;
|
||||||
|
@ -1021,19 +1023,20 @@ _canvas_event_feed_mouse_wheel(Eo *eo_e, void *_pd, va_list *list)
|
||||||
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);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
ev.canvas.x = e->pointer.x;
|
if (!evas_event_freezes_through(eo_obj, obj))
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
|
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
|
|
||||||
if ((!e->is_frozen) && !evas_event_freezes_through(eo_obj, obj))
|
|
||||||
{
|
{
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
|
||||||
|
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
|
||||||
|
obj->mouse_grabbed);
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
EVAS_CALLBACK_MOUSE_WHEEL, &ev,
|
EVAS_CALLBACK_MOUSE_WHEEL, &ev,
|
||||||
event_id);
|
event_id);
|
||||||
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
_evas_event_source_wheel_events(eo_obj, &ev, event_id);
|
_evas_event_source_wheel_events(eo_obj, &ev, event_id);
|
||||||
|
if (e->delete_me || e->is_frozen) break;
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
}
|
||||||
if (copy) copy = eina_list_free(copy);
|
if (copy) copy = eina_list_free(copy);
|
||||||
_evas_post_event_callback_call(eo_e, e);
|
_evas_post_event_callback_call(eo_e, e);
|
||||||
|
@ -1119,12 +1122,6 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
|
||||||
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);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
ev.cur.canvas.x = e->pointer.x;
|
|
||||||
ev.cur.canvas.y = e->pointer.y;
|
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
|
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x,
|
|
||||||
&ev.cur.canvas.y,
|
|
||||||
obj->mouse_grabbed);
|
|
||||||
if ((!e->is_frozen) &&
|
if ((!e->is_frozen) &&
|
||||||
(evas_object_clippers_is_visible(eo_obj, obj) ||
|
(evas_object_clippers_is_visible(eo_obj, obj) ||
|
||||||
obj->mouse_grabbed) &&
|
obj->mouse_grabbed) &&
|
||||||
|
@ -1133,13 +1130,22 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
|
||||||
(!evas_object_is_source_invisible(eo_obj, obj)) &&
|
(!evas_object_is_source_invisible(eo_obj, obj)) &&
|
||||||
(!obj->clip.clipees))
|
(!obj->clip.clipees))
|
||||||
{
|
{
|
||||||
|
ev.cur.canvas.x = e->pointer.x;
|
||||||
|
ev.cur.canvas.y = e->pointer.y;
|
||||||
|
_evas_event_framespace_adjust(eo_obj, &ev.cur.canvas.x,
|
||||||
|
&ev.cur.canvas.y);
|
||||||
|
_evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x,
|
||||||
|
&ev.cur.canvas.y,
|
||||||
|
obj->mouse_grabbed);
|
||||||
|
|
||||||
if ((px != x) || (py != y))
|
if ((px != x) || (py != y))
|
||||||
{
|
{
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
|
EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
|
||||||
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
if ((obj->proxy.is_proxy) &&
|
||||||
_evas_event_source_mouse_move_events(eo_obj, &ev,
|
(obj->proxy.src_events))
|
||||||
event_id);
|
_evas_event_source_mouse_move_events(eo_obj, &ev,
|
||||||
|
event_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1180,33 +1186,28 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
|
||||||
while (outs)
|
while (outs)
|
||||||
{
|
{
|
||||||
Evas_Object *eo_obj;
|
Evas_Object *eo_obj;
|
||||||
|
|
||||||
eo_obj = outs->data;
|
eo_obj = outs->data;
|
||||||
outs = eina_list_remove(outs, eo_obj);
|
outs = eina_list_remove(outs, eo_obj);
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
if ((obj->mouse_grabbed == 0) && (!e->delete_me))
|
if ((obj->mouse_grabbed == 0) && (!e->delete_me))
|
||||||
{
|
{
|
||||||
|
if (!obj->mouse_in) continue;
|
||||||
|
obj->mouse_in = 0;
|
||||||
|
if (obj->delete_me || e->is_frozen) continue;
|
||||||
ev.canvas.x = e->pointer.x;
|
ev.canvas.x = e->pointer.x;
|
||||||
ev.canvas.y = e->pointer.y;
|
ev.canvas.y = e->pointer.y;
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
|
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
|
&ev.canvas.y);
|
||||||
|
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
|
||||||
|
&ev.canvas.y,
|
||||||
|
obj->mouse_grabbed);
|
||||||
e->pointer.object.in = eina_list_remove(e->pointer.object.in, eo_obj);
|
e->pointer.object.in = eina_list_remove(e->pointer.object.in, eo_obj);
|
||||||
if (obj->mouse_in)
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
{
|
EVAS_CALLBACK_MOUSE_OUT,
|
||||||
obj->mouse_in = 0;
|
&ev, event_id);
|
||||||
if (!obj->delete_me)
|
if ((obj->proxy.is_proxy) &&
|
||||||
{
|
(obj->proxy.src_events))
|
||||||
if (!e->is_frozen)
|
_evas_event_source_mouse_out_events(eo_obj, &ev, event_id);
|
||||||
{
|
|
||||||
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, &ev, event_id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_evas_post_event_callback_call(eo_e, e);
|
_evas_post_event_callback_call(eo_e, e);
|
||||||
|
@ -1307,19 +1308,23 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
|
||||||
if (obj->mouse_in)
|
if (obj->mouse_in)
|
||||||
{
|
{
|
||||||
obj->mouse_in = 0;
|
obj->mouse_in = 0;
|
||||||
|
if (e->is_frozen) continue;
|
||||||
ev2.canvas.x = e->pointer.x;
|
ev2.canvas.x = e->pointer.x;
|
||||||
ev2.canvas.y = e->pointer.y;
|
ev2.canvas.y = e->pointer.y;
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev2.canvas.x, &ev2.canvas.y);
|
_evas_event_framespace_adjust(eo_obj, &ev2.canvas.x,
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed);
|
&ev2.canvas.y);
|
||||||
|
_evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x,
|
||||||
|
&ev2.canvas.y,
|
||||||
|
obj->mouse_grabbed);
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
EVAS_CALLBACK_MOUSE_OUT,
|
EVAS_CALLBACK_MOUSE_OUT,
|
||||||
&ev2, event_id);
|
&ev2, event_id);
|
||||||
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
_evas_event_source_mouse_out_events(eo_obj, &ev2,
|
_evas_event_source_mouse_out_events(eo_obj, &ev2,
|
||||||
event_id);
|
event_id);
|
||||||
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
}
|
||||||
_evas_post_event_callback_call(eo_e, e);
|
_evas_post_event_callback_call(eo_e, e);
|
||||||
|
|
||||||
|
@ -1331,28 +1336,30 @@ _canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
|
||||||
EINA_LIST_FOREACH(ins, l, eo_obj)
|
EINA_LIST_FOREACH(ins, l, eo_obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
ev3.canvas.x = e->pointer.x;
|
|
||||||
ev3.canvas.y = e->pointer.y;
|
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev3.canvas.x, &ev3.canvas.y);
|
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed);
|
|
||||||
/* if its not in the old list of ins send an enter event */
|
/* if its not in the old list of ins send an enter event */
|
||||||
if (!eina_list_data_find(e->pointer.object.in, eo_obj))
|
if (!eina_list_data_find(e->pointer.object.in, eo_obj))
|
||||||
{
|
{
|
||||||
if (!obj->mouse_in)
|
if (!obj->mouse_in)
|
||||||
{
|
{
|
||||||
obj->mouse_in = 1;
|
obj->mouse_in = 1;
|
||||||
if (!e->is_frozen)
|
if (e->is_frozen) continue;
|
||||||
{
|
ev3.canvas.x = e->pointer.x;
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
ev3.canvas.y = e->pointer.y;
|
||||||
EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2);
|
_evas_event_framespace_adjust(eo_obj, &ev3.canvas.x,
|
||||||
if ((obj->proxy.is_proxy) &&
|
&ev3.canvas.y);
|
||||||
(obj->proxy.src_events))
|
_evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x,
|
||||||
_evas_event_source_mouse_in_events(eo_obj, &ev3,
|
&ev3.canvas.y,
|
||||||
event_id2);
|
obj->mouse_grabbed);
|
||||||
}
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
|
EVAS_CALLBACK_MOUSE_IN,
|
||||||
|
&ev3, event_id2);
|
||||||
|
if ((obj->proxy.is_proxy) &&
|
||||||
|
(obj->proxy.src_events))
|
||||||
|
_evas_event_source_mouse_in_events(eo_obj, &ev3,
|
||||||
|
event_id2);
|
||||||
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
}
|
||||||
if (e->pointer.mouse_grabbed == 0)
|
if (e->pointer.mouse_grabbed == 0)
|
||||||
{
|
{
|
||||||
|
@ -1493,23 +1500,20 @@ nogrep:
|
||||||
/* otherwise it has left the object */
|
/* otherwise it has left the object */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (obj->mouse_in)
|
if (!obj->mouse_in) continue;
|
||||||
{
|
obj->mouse_in = 0;
|
||||||
obj->mouse_in = 0;
|
if (e->is_frozen) continue;
|
||||||
ev2.canvas.x = e->pointer.x;
|
ev2.canvas.x = e->pointer.x;
|
||||||
ev2.canvas.y = e->pointer.y;
|
ev2.canvas.y = e->pointer.y;
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev2.canvas.x, &ev2.canvas.y);
|
_evas_event_framespace_adjust(eo_obj, &ev2.canvas.x,
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed);
|
&ev2.canvas.y);
|
||||||
if (!e->is_frozen)
|
_evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x,
|
||||||
{
|
&ev2.canvas.y, obj->mouse_grabbed);
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id);
|
EVAS_CALLBACK_MOUSE_OUT, &ev2,
|
||||||
if ((obj->proxy.is_proxy) &&
|
event_id);
|
||||||
(obj->proxy.src_events))
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
_evas_event_source_mouse_out_events(eo_obj, &ev2,
|
_evas_event_source_mouse_out_events(eo_obj, &ev2, event_id);
|
||||||
event_id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
|
@ -1523,28 +1527,25 @@ nogrep:
|
||||||
EINA_LIST_FOREACH(newin, l, eo_obj)
|
EINA_LIST_FOREACH(newin, l, eo_obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
ev3.canvas.x = e->pointer.x;
|
|
||||||
ev3.canvas.y = e->pointer.y;
|
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev3.canvas.x, &ev3.canvas.y);
|
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed);
|
|
||||||
/* if its not in the old list of ins send an enter event */
|
/* if its not in the old list of ins send an enter event */
|
||||||
if (!eina_list_data_find(e->pointer.object.in, eo_obj))
|
if (!eina_list_data_find(e->pointer.object.in, eo_obj))
|
||||||
{
|
{
|
||||||
if (!obj->mouse_in)
|
if (obj->mouse_in) continue;
|
||||||
{
|
obj->mouse_in = 1;
|
||||||
obj->mouse_in = 1;
|
if (e->is_frozen) continue;
|
||||||
if (!e->is_frozen)
|
ev3.canvas.x = e->pointer.x;
|
||||||
{
|
ev3.canvas.y = e->pointer.y;
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
_evas_event_framespace_adjust(eo_obj, &ev3.canvas.x,
|
||||||
EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2);
|
&ev3.canvas.y);
|
||||||
if ((obj->proxy.is_proxy) &&
|
_evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x,
|
||||||
(obj->proxy.src_events))
|
&ev3.canvas.y, obj->mouse_grabbed);
|
||||||
_evas_event_source_mouse_in_events(eo_obj, &ev3,
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
event_id2);
|
EVAS_CALLBACK_MOUSE_IN, &ev3,
|
||||||
}
|
event_id2);
|
||||||
}
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
|
_evas_event_source_mouse_in_events(eo_obj, &ev3, event_id2);
|
||||||
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
}
|
||||||
/* free our old list of ins */
|
/* free our old list of ins */
|
||||||
eina_list_free(e->pointer.object.in);
|
eina_list_free(e->pointer.object.in);
|
||||||
|
@ -1609,23 +1610,22 @@ _canvas_event_feed_mouse_in(Eo *eo_e, void *_pd, va_list *list)
|
||||||
EINA_LIST_FOREACH(ins, l, eo_obj)
|
EINA_LIST_FOREACH(ins, l, eo_obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
|
|
||||||
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
|
|
||||||
if (!eina_list_data_find(e->pointer.object.in, eo_obj))
|
if (!eina_list_data_find(e->pointer.object.in, eo_obj))
|
||||||
{
|
{
|
||||||
if (!obj->mouse_in)
|
if (obj->mouse_in) continue;
|
||||||
{
|
obj->mouse_in = 1;
|
||||||
obj->mouse_in = 1;
|
ev.canvas.x = e->pointer.x;
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
ev.canvas.y = e->pointer.y;
|
||||||
EVAS_CALLBACK_MOUSE_IN, &ev,
|
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
|
||||||
event_id);
|
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y,
|
||||||
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
obj->mouse_grabbed);
|
||||||
_evas_event_source_mouse_in_events(eo_obj, &ev, event_id);
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
}
|
EVAS_CALLBACK_MOUSE_IN, &ev,
|
||||||
|
event_id);
|
||||||
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
|
_evas_event_source_mouse_in_events(eo_obj, &ev, event_id);
|
||||||
|
if (e->delete_me || e->is_frozen) break;
|
||||||
}
|
}
|
||||||
if (e->delete_me || e->is_frozen) break;
|
|
||||||
}
|
}
|
||||||
/* free our old list of ins */
|
/* free our old list of ins */
|
||||||
e->pointer.object.in = eina_list_free(e->pointer.object.in);
|
e->pointer.object.in = eina_list_free(e->pointer.object.in);
|
||||||
|
@ -1689,28 +1689,24 @@ _canvas_event_feed_mouse_out(Eo *eo_e, void *_pd, va_list *list)
|
||||||
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);
|
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);
|
|
||||||
if (obj->mouse_in)
|
|
||||||
{
|
{
|
||||||
obj->mouse_in = 0;
|
ev.canvas.x = e->pointer.x;
|
||||||
if (!obj->delete_me)
|
ev.canvas.y = e->pointer.y;
|
||||||
{
|
_evas_event_framespace_adjust(eo_obj, &ev.canvas.x,
|
||||||
if (!e->is_frozen)
|
&ev.canvas.y);
|
||||||
{
|
_evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x,
|
||||||
evas_object_event_callback_call(eo_obj, obj,
|
&ev.canvas.y, obj->mouse_grabbed);
|
||||||
EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
|
evas_object_event_callback_call(eo_obj, obj,
|
||||||
if ((obj->proxy.is_proxy) &&
|
EVAS_CALLBACK_MOUSE_OUT,
|
||||||
(obj->proxy.src_events))
|
&ev, event_id);
|
||||||
_evas_event_source_mouse_out_events(eo_obj, &ev,
|
if ((obj->proxy.is_proxy) && (obj->proxy.src_events))
|
||||||
event_id);
|
_evas_event_source_mouse_out_events(eo_obj, &ev, event_id);
|
||||||
}
|
if (e->delete_me) break;
|
||||||
}
|
|
||||||
obj->mouse_grabbed = 0;
|
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
obj->mouse_grabbed = 0;
|
||||||
}
|
}
|
||||||
if (copy) copy = eina_list_free(copy);
|
if (copy) copy = eina_list_free(copy);
|
||||||
/* free our old list of ins */
|
/* free our old list of ins */
|
||||||
|
|
Loading…
Reference in New Issue