bug fix related with evas event counter
authorJiyoun Park <jijibe99@gmail.com>
Thu, 15 Dec 2011 06:23:53 +0000 (06:23 +0000)
committerJiyoun Park <jijibe99@gmail.com>
Thu, 15 Dec 2011 06:23:53 +0000 (06:23 +0000)
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

legacy/evas/src/lib/canvas/evas_callbacks.c
legacy/evas/src/lib/canvas/evas_events.c
legacy/evas/src/lib/canvas/evas_focus.c
legacy/evas/src/lib/canvas/evas_object_inform.c
legacy/evas/src/lib/canvas/evas_object_main.c
legacy/evas/src/lib/include/evas_private.h

index f6a8195..93f34f2 100644 (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);
index cd304f6..624842c 100644 (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);
index 5f52030..29da7e7 100644 (file)
 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);
      }
index bc09eb9..302da42 100644 (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);
 }
index 3eaded9..7fe52e4 100644 (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;
index 776847a..30982ee 100644 (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);