forked from enlightenment/efl
bug fix related with evas event counter
currently evas_object_event_callback_call checks _evas_event_counter for preventing object's callback called several times in one evas event. but it use global variable(_evas_event_counter), it can be changed while procssing same event. for example , evas_event_feed_mouse_up. If there are several object in e->pointer.object.in and object 1's callback create new evas event, object 2 cannot now event id. so I change callback call api, and object callbacks can decide wheather it deal with that event. SVN revision: 66234
This commit is contained in:
parent
69a659fbb8
commit
36e658e20a
|
@ -162,7 +162,7 @@ evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info)
|
|||
}
|
||||
|
||||
void
|
||||
evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info)
|
||||
evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info, int event_id)
|
||||
{
|
||||
/* MEM OK */
|
||||
Eina_Inlist **l_mod = NULL, *l;
|
||||
|
@ -170,9 +170,9 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
|
|||
Evas *e;
|
||||
|
||||
if ((obj->delete_me) || (!obj->layer)) return;
|
||||
if ((obj->last_event == _evas_event_counter) &&
|
||||
if ((obj->last_event == event_id) &&
|
||||
(obj->last_event_type == type)) return;
|
||||
obj->last_event = _evas_event_counter;
|
||||
obj->last_event = event_id;
|
||||
obj->last_event_type = type;
|
||||
if (!(e = obj->layer->evas)) return;
|
||||
|
||||
|
@ -250,7 +250,7 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
|
|||
{
|
||||
if ((obj->smart.parent) && (type != EVAS_CALLBACK_FREE) &&
|
||||
(type <= EVAS_CALLBACK_KEY_UP))
|
||||
evas_object_event_callback_call(obj->smart.parent, type, event_info);
|
||||
evas_object_event_callback_call(obj->smart.parent, type, event_info, event_id);
|
||||
}
|
||||
}
|
||||
_evas_unwalk(e);
|
||||
|
|
|
@ -198,6 +198,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
|
|||
Evas_Event_Mouse_Down ev;
|
||||
Evas_Object *obj;
|
||||
int addgrab = 0;
|
||||
int event_id = 0;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
|
@ -213,6 +214,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.button = b;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
|
@ -261,7 +263,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
|
|||
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
|
||||
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev, event_id);
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
if (copy) eina_list_free(copy);
|
||||
|
@ -279,9 +281,11 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data)
|
|||
Evas_Event_Mouse_Out ev;
|
||||
Evas_Object *obj;
|
||||
int post_called = 0;
|
||||
int event_id = 0;
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
|
@ -309,7 +313,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data)
|
|||
{
|
||||
obj->mouse_in = 0;
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
|
@ -321,9 +325,11 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data)
|
|||
{
|
||||
Evas_Event_Mouse_In ev_in;
|
||||
Evas_Object *obj_itr;
|
||||
int event_id = 0;
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev_in.buttons = e->pointer.button;
|
||||
ev_in.output.x = e->pointer.x;
|
||||
ev_in.output.y = e->pointer.y;
|
||||
|
@ -346,7 +352,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data)
|
|||
{
|
||||
obj_itr->mouse_in = 1;
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in);
|
||||
evas_object_event_callback_call(obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
|
@ -396,9 +402,11 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
|||
{
|
||||
Evas_Event_Mouse_Up ev;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0;
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.button = b;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
|
@ -429,7 +437,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
|||
if (!obj->delete_me)
|
||||
{
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id);
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
|
@ -480,6 +488,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam
|
|||
Eina_List *l, *copy;
|
||||
Evas_Event_Mouse_Wheel ev;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
|
@ -490,6 +499,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.direction = direction;
|
||||
ev.z = z;
|
||||
ev.output.x = e->pointer.x;
|
||||
|
@ -511,7 +521,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam
|
|||
ev.canvas.y = e->pointer.y;
|
||||
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
|
||||
if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj))
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev, event_id);
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
if (copy) copy = eina_list_free(copy);
|
||||
|
@ -559,9 +569,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
{
|
||||
Evas_Event_Mouse_Move ev;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0;
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.buttons = e->pointer.button;
|
||||
ev.cur.output.x = e->pointer.x;
|
||||
ev.cur.output.y = e->pointer.y;
|
||||
|
@ -592,7 +604,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
(!obj->clip.clipees))
|
||||
{
|
||||
if ((px != x) || (py != y))
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
|
||||
}
|
||||
else
|
||||
outs = eina_list_append(outs, obj);
|
||||
|
@ -602,9 +614,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
}
|
||||
{
|
||||
Evas_Event_Mouse_Out ev;
|
||||
int event_id = 0;
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
|
@ -635,7 +649,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
if (!obj->delete_me)
|
||||
{
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -651,9 +665,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
Evas_Event_Mouse_Out ev2;
|
||||
Evas_Event_Mouse_In ev3;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0, event_id2 = 0;
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.buttons = e->pointer.button;
|
||||
ev.cur.output.x = e->pointer.x;
|
||||
ev.cur.output.y = e->pointer.y;
|
||||
|
@ -717,7 +733,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
ev.cur.canvas.x = e->pointer.x;
|
||||
ev.cur.canvas.y = e->pointer.y;
|
||||
_evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
|
||||
}
|
||||
}
|
||||
/* otherwise it has left the object */
|
||||
|
@ -730,7 +746,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
ev2.canvas.y = e->pointer.y;
|
||||
_evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed);
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
|
@ -739,6 +755,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id2 = _evas_event_counter;
|
||||
if (copy) copy = eina_list_free(copy);
|
||||
/* go thru our current list of ins */
|
||||
EINA_LIST_FOREACH(ins, l, obj)
|
||||
|
@ -753,7 +770,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
{
|
||||
obj->mouse_in = 1;
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
|
@ -782,6 +799,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
|||
Eina_List *l;
|
||||
Evas_Event_Mouse_In ev;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
|
@ -795,6 +813,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
|
@ -820,7 +839,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
|||
{
|
||||
obj->mouse_in = 1;
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev, event_id);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
|
@ -838,6 +857,7 @@ EAPI void
|
|||
evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
||||
{
|
||||
Evas_Event_Mouse_Out ev;
|
||||
int event_id = 0;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
|
@ -849,6 +869,7 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
|
@ -880,7 +901,7 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
|||
if (!obj->delete_me)
|
||||
{
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
|
||||
}
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
|
@ -906,6 +927,7 @@ evas_event_feed_multi_down(Evas *e,
|
|||
Evas_Event_Multi_Down ev;
|
||||
Evas_Object *obj;
|
||||
int addgrab = 0;
|
||||
int event_id = 0;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
|
@ -917,6 +939,7 @@ evas_event_feed_multi_down(Evas *e,
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.device = d;
|
||||
ev.output.x = x;
|
||||
ev.output.y = y;
|
||||
|
@ -964,7 +987,7 @@ evas_event_feed_multi_down(Evas *e,
|
|||
if (y != ev.canvas.y)
|
||||
ev.canvas.ysub = ev.canvas.y; // fixme - lost precision
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_DOWN, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_DOWN, &ev, event_id);
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
if (copy) eina_list_free(copy);
|
||||
|
@ -986,6 +1009,7 @@ evas_event_feed_multi_up(Evas *e,
|
|||
Eina_List *l, *copy;
|
||||
Evas_Event_Multi_Up ev;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
|
@ -997,6 +1021,7 @@ evas_event_feed_multi_up(Evas *e,
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.device = d;
|
||||
ev.output.x = x;
|
||||
ev.output.y = y;
|
||||
|
@ -1038,7 +1063,7 @@ evas_event_feed_multi_up(Evas *e,
|
|||
e->pointer.mouse_grabbed--;
|
||||
}
|
||||
if (e->events_frozen <= 0)
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_UP, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_UP, &ev, event_id);
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
if (copy) copy = eina_list_free(copy);
|
||||
|
@ -1076,9 +1101,11 @@ evas_event_feed_multi_move(Evas *e,
|
|||
Eina_List *l, *copy;
|
||||
Evas_Event_Multi_Move ev;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0;
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.device = d;
|
||||
ev.cur.output.x = x;
|
||||
ev.cur.output.y = y;
|
||||
|
@ -1115,7 +1142,7 @@ evas_event_feed_multi_move(Evas *e,
|
|||
ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision
|
||||
if (y != ev.cur.canvas.y)
|
||||
ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id);
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
|
@ -1127,9 +1154,11 @@ evas_event_feed_multi_move(Evas *e,
|
|||
Eina_List *l, *copy;
|
||||
Evas_Event_Multi_Move ev;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0;
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.device = d;
|
||||
ev.cur.output.x = x;
|
||||
ev.cur.output.y = y;
|
||||
|
@ -1178,7 +1207,7 @@ evas_event_feed_multi_move(Evas *e,
|
|||
ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision
|
||||
if (y != ev.cur.canvas.y)
|
||||
ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id);
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
|
@ -1203,6 +1232,7 @@ evas_event_feed_multi_move(Evas *e,
|
|||
EAPI void
|
||||
evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
|
||||
{
|
||||
int event_id = 0;
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
|
@ -1217,6 +1247,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
exclusive = EINA_FALSE;
|
||||
ev.keyname = (char *)keyname;
|
||||
ev.data = (void *)data;
|
||||
|
@ -1252,7 +1283,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
|
|||
!evas_event_freezes_through(g->object))
|
||||
evas_object_event_callback_call(g->object,
|
||||
EVAS_CALLBACK_KEY_DOWN,
|
||||
&ev);
|
||||
&ev, event_id);
|
||||
if (g->exclusive) exclusive = EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -1279,7 +1310,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
|
|||
{
|
||||
if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused))
|
||||
evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_DOWN,
|
||||
&ev);
|
||||
&ev, event_id);
|
||||
}
|
||||
_evas_post_event_callback_call(e);
|
||||
_evas_unwalk(e);
|
||||
|
@ -1288,6 +1319,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
|
|||
EAPI void
|
||||
evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
|
||||
{
|
||||
int event_id = 0;
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
|
@ -1301,6 +1333,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
exclusive = EINA_FALSE;
|
||||
ev.keyname = (char *)keyname;
|
||||
ev.data = (void *)data;
|
||||
|
@ -1335,7 +1368,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
|
|||
if (e->events_frozen <= 0 &&
|
||||
!evas_event_freezes_through(g->object))
|
||||
evas_object_event_callback_call(g->object,
|
||||
EVAS_CALLBACK_KEY_UP, &ev);
|
||||
EVAS_CALLBACK_KEY_UP, &ev, event_id);
|
||||
if (g->exclusive) exclusive = EINA_TRUE;
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
|
@ -1362,7 +1395,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
|
|||
{
|
||||
if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused))
|
||||
evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_UP,
|
||||
&ev);
|
||||
&ev, event_id);
|
||||
}
|
||||
_evas_post_event_callback_call(e);
|
||||
_evas_unwalk(e);
|
||||
|
@ -1374,6 +1407,7 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data
|
|||
Eina_List *l, *copy;
|
||||
Evas_Event_Hold ev;
|
||||
Evas_Object *obj;
|
||||
int event_id = 0;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
|
@ -1384,6 +1418,7 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data
|
|||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
ev.hold = hold;
|
||||
ev.data = (void *)data;
|
||||
ev.timestamp = timestamp;
|
||||
|
@ -1394,7 +1429,7 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data
|
|||
EINA_LIST_FOREACH(copy, l, obj)
|
||||
{
|
||||
if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj))
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev, event_id);
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
if (copy) copy = eina_list_free(copy);
|
||||
|
|
|
@ -10,12 +10,14 @@
|
|||
EAPI void
|
||||
evas_object_focus_set(Evas_Object *obj, Eina_Bool focus)
|
||||
{
|
||||
int event_id = 0;
|
||||
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
|
||||
_evas_object_event_new();
|
||||
|
||||
event_id = _evas_event_counter;
|
||||
if (focus)
|
||||
{
|
||||
if (obj->focused) goto end;
|
||||
|
@ -23,7 +25,7 @@ evas_object_focus_set(Evas_Object *obj, Eina_Bool focus)
|
|||
evas_object_focus_set(obj->layer->evas->focused, 0);
|
||||
obj->focused = 1;
|
||||
obj->layer->evas->focused = obj;
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL, event_id);
|
||||
evas_event_callback_call(obj->layer->evas,
|
||||
EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, obj);
|
||||
}
|
||||
|
@ -32,7 +34,7 @@ evas_object_focus_set(Evas_Object *obj, Eina_Bool focus)
|
|||
if (!obj->focused) goto end;
|
||||
obj->focused = 0;
|
||||
obj->layer->evas->focused = NULL;
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL, event_id);
|
||||
evas_event_callback_call(obj->layer->evas,
|
||||
EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, obj);
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ evas_object_inform_call_show(Evas_Object *obj)
|
|||
{
|
||||
_evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@ evas_object_inform_call_hide(Evas_Object *obj)
|
|||
{
|
||||
_evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ evas_object_inform_call_move(Evas_Object *obj)
|
|||
{
|
||||
_evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ evas_object_inform_call_resize(Evas_Object *obj)
|
|||
{
|
||||
_evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ evas_object_inform_call_restack(Evas_Object *obj)
|
|||
{
|
||||
_evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ evas_object_inform_call_changed_size_hints(Evas_Object *obj)
|
|||
{
|
||||
_evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ evas_object_inform_call_image_preloaded(Evas_Object *obj)
|
|||
_evas_object_image_preloading_set(obj, 0);
|
||||
_evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
|
||||
|
@ -74,6 +74,6 @@ evas_object_inform_call_image_unloaded(Evas_Object *obj)
|
|||
{
|
||||
_evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
|
|
|
@ -408,11 +408,11 @@ evas_object_del(Evas_Object *obj)
|
|||
obj->focused = 0;
|
||||
obj->layer->evas->focused = NULL;
|
||||
_evas_object_event_new();
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
}
|
||||
_evas_object_event_new();
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_DEL, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_DEL, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
if (obj->mouse_grabbed > 0)
|
||||
obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
|
||||
|
@ -438,7 +438,7 @@ evas_object_del(Evas_Object *obj)
|
|||
if (obj->smart.smart) evas_object_smart_del(obj);
|
||||
evas_object_map_set(obj, NULL);
|
||||
_evas_object_event_new();
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL);
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL, _evas_event_counter);
|
||||
_evas_post_event_callback_call(obj->layer->evas);
|
||||
evas_object_smart_cleanup(obj);
|
||||
obj->delete_me = 1;
|
||||
|
|
|
@ -913,7 +913,7 @@ void evas_object_clip_across_check(Evas_Object *obj);
|
|||
void evas_object_clip_across_clippees_check(Evas_Object *obj);
|
||||
void evas_object_mapped_clip_across_mark(Evas_Object *obj);
|
||||
void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info);
|
||||
void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info);
|
||||
void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info, int event_id);
|
||||
Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y);
|
||||
int evas_mem_free(int mem_required);
|
||||
int evas_mem_degrade(int mem_required);
|
||||
|
|
Loading…
Reference in New Issue