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:
Jiyoun Park 2011-12-15 06:23:53 +00:00
parent 69a659fbb8
commit 36e658e20a
6 changed files with 76 additions and 39 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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);