diff --git a/legacy/evas/src/lib/Evas.h b/legacy/evas/src/lib/Evas.h index f0206bbb22..df061e88a0 100644 --- a/legacy/evas/src/lib/Evas.h +++ b/legacy/evas/src/lib/Evas.h @@ -15,7 +15,12 @@ enum _Evas_Callback_Type EVAS_CALLBACK_KEY_DOWN, /**< Key Press Event */ EVAS_CALLBACK_KEY_UP, /**< Key Release Event */ EVAS_CALLBACK_FOCUS_IN, /**< Focus In Event */ - EVAS_CALLBACK_FOCUS_OUT /**< Focus Out Event */ + EVAS_CALLBACK_FOCUS_OUT, /**< Focus Out Event */ + EVAS_CALLBACK_SHOW, /**< Show Event */ + EVAS_CALLBACK_HIDE, /**< Hide Event */ + EVAS_CALLBACK_MOVE, /**< Move Event */ + EVAS_CALLBACK_RESIZE, /**< Resize Event */ + EVAS_CALLBACK_RESTACK /**< Restack Event */ }; /** @@ -413,8 +418,6 @@ extern "C" { void evas_event_feed_key_down (Evas *e, char *keyname); void evas_event_feed_key_up (Evas *e, char *keyname); - * should we allow multiple objects to have the focus? good question! - void evas_object_focus_set (Evas_Object *o, int focus); int evas_object_focus_get (Evas_Object *o); @@ -439,6 +442,9 @@ extern "C" { void evas_key_lock_on (Evas *e, char *keyname); void evas_key_lock_off (Evas *e, char *keyname); + int evas_object_key_grab (Evas_Object *o, char *keyname, int exclusive); + void evas_object_key_ungrab (Evas_Object *o, char *keyname); + * errr need to add key grabbing/ungrabbing calls. ...end implement */ @@ -451,18 +457,6 @@ extern "C" { void evas_object_event_callback_add (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), void *data); void *evas_object_event_callback_del (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info)); - void evas_object_inform_show_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); - void *evas_object_inform_show_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)); - void evas_object_inform_hide_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); - void *evas_object_inform_hide_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)); - void evas_object_inform_move_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); - void *evas_object_inform_move_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)); - void evas_object_inform_resize_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); - void *evas_object_inform_resize_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)); - void evas_object_inform_restack_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); - void *evas_object_inform_restack_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)); - -/* FIXME: implement... */ void evas_object_intercept_show_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); void *evas_object_intercept_show_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)); void evas_object_intercept_hide_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); @@ -481,7 +475,6 @@ extern "C" { void *evas_object_intercept_stack_below_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below)); void evas_object_intercept_layer_set_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l), void *data); void *evas_object_intercept_layer_set_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l)); -/* ...end implement */ #ifdef __cplusplus } diff --git a/legacy/evas/src/lib/canvas/evas_callbacks.c b/legacy/evas/src/lib/canvas/evas_callbacks.c index 5ab1966f36..9464bf722b 100644 --- a/legacy/evas/src/lib/canvas/evas_callbacks.c +++ b/legacy/evas/src/lib/canvas/evas_callbacks.c @@ -2,6 +2,43 @@ #include "evas_private.h" #include "Evas.h" +static void evas_object_event_callback_list_free(Evas_Object_List **list); + +static void +evas_object_event_callback_list_free(Evas_Object_List **list) +{ + /* MEM OK */ + while (*list) + { + Evas_Func_Node *fn; + + fn = (Evas_Func_Node *)(*list); + *list = evas_object_list_remove(*list, fn); + free(fn); + } +} + +void +evas_object_event_callback_cleanup(Evas_Object *obj) +{ + /* MEM OK */ + evas_object_event_callback_list_free(&(obj->callbacks.in)); + evas_object_event_callback_list_free(&(obj->callbacks.out)); + evas_object_event_callback_list_free(&(obj->callbacks.down)); + evas_object_event_callback_list_free(&(obj->callbacks.up)); + evas_object_event_callback_list_free(&(obj->callbacks.move)); + evas_object_event_callback_list_free(&(obj->callbacks.free)); + evas_object_event_callback_list_free(&(obj->callbacks.key_down)); + evas_object_event_callback_list_free(&(obj->callbacks.key_up)); + evas_object_event_callback_list_free(&(obj->callbacks.obj_focus_in)); + evas_object_event_callback_list_free(&(obj->callbacks.obj_focus_out)); + evas_object_event_callback_list_free(&(obj->callbacks.obj_show)); + evas_object_event_callback_list_free(&(obj->callbacks.obj_hide)); + evas_object_event_callback_list_free(&(obj->callbacks.obj_move)); + evas_object_event_callback_list_free(&(obj->callbacks.obj_resize)); + evas_object_event_callback_list_free(&(obj->callbacks.obj_restack)); +} + void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info) { @@ -28,6 +65,33 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void case EVAS_CALLBACK_FREE: l_mod = &(obj->callbacks.free); break; + case EVAS_CALLBACK_KEY_DOWN: + l_mod = &(obj->callbacks.key_down); + break; + case EVAS_CALLBACK_KEY_UP: + l_mod = &(obj->callbacks.key_up); + break; + case EVAS_CALLBACK_FOCUS_IN: + l_mod = &(obj->callbacks.obj_focus_in); + break; + case EVAS_CALLBACK_FOCUS_OUT: + l_mod = &(obj->callbacks.obj_focus_out); + break; + case EVAS_CALLBACK_SHOW: + l_mod = &(obj->callbacks.obj_show); + break; + case EVAS_CALLBACK_HIDE: + l_mod = &(obj->callbacks.obj_hide); + break; + case EVAS_CALLBACK_MOVE: + l_mod = &(obj->callbacks.obj_move); + break; + case EVAS_CALLBACK_RESIZE: + l_mod = &(obj->callbacks.obj_resize); + break; + case EVAS_CALLBACK_RESTACK: + l_mod = &(obj->callbacks.obj_restack); + break; default: return; break; @@ -73,10 +137,12 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void * The event type @p type to trigger the function mys be one of * EVAS_CALLBACK_MOUSE_IN, EVAS_CALLBACK_MOUSE_OUT, EVAS_CALLBACK_MOUSE_DOWN, * EVAS_CALLBACK_MOUSE_UP, EVAS_CALLBACK_MOUSE_MOVE, EVAS_CALLBACK_FREE, - * EVAS_CALLBACK_KEY_DOWN, EVAS_CALLBACK_KEY_UP, EVAS_CALLBACK_FOCUS_IN - * or EVAS_CALLBACK_FOCUS_OUT. This determines the kind of event that will - * trigger the callback to be called. The @p event_info pointer passed to the - * callback will be one of the following, depending on the event tiggering it: + * EVAS_CALLBACK_KEY_DOWN, EVAS_CALLBACK_KEY_UP, EVAS_CALLBACK_FOCUS_IN, + * EVAS_CALLBACK_FOCUS_OUT, EVAS_CALLBACK_SHOW, EVAS_CALLBACK_HIDE, + * EVAS_CALLBACK_MOVE, EVAS_CALLBACK_RESIZE or EVAS_CALLBACK_RESTACK. This + * determines the kind of event that will trigger the callback to be called. + * The @p event_info pointer passed to the callback will be one of the + * following, depending on the event tiggering it: * * EVAS_CALLBACK_MOUSE_IN: event_info = pointer to Evas_Event_Mouse_In * @@ -151,6 +217,26 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void * This event is triggered by an object losing the focus. When the callback is * called the object has already lost the focus. * + * EVAS_CALLBACK_SHOW: event_info = NULL + * + * This event is triggered being shown by evas_object_show(). + * + * EVAS_CALLBACK_HIDE: event_info = NULL + * + * This event is triggered by an object being hidden by evas_object_hide(). + * + * EVAS_CALLBACK_MOVE: event_info = NULL + * + * This event is triggered by an object being moved. evas_object_move() can + * trigger this, as can any object specific manipulations that would mean the + * objects origin could move. + * + * EVAS_CALLBACK_RESIZE: event_info = NULL + * + * This event is triggered by an object being resized. Resizes can be + * triggered by evas_object_resize() or by any object specific calls that may + * cause the object to resize. + * * Example: * @code * extern Evas_Object *object; @@ -177,6 +263,7 @@ evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void ( { /* MEM OK */ Evas_Func_Node *fn; + Evas_Object_List **l_mod; MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; @@ -189,46 +276,60 @@ evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void ( if (!fn) return; fn->func = func; fn->data = data; - do + + switch (type) { - switch (type) - { - case EVAS_CALLBACK_MOUSE_IN: - obj->callbacks.in = evas_object_list_prepend(obj->callbacks.in, fn); - break; - case EVAS_CALLBACK_MOUSE_OUT: - obj->callbacks.out = evas_object_list_prepend(obj->callbacks.out, fn); - break; - case EVAS_CALLBACK_MOUSE_DOWN: - obj->callbacks.down = evas_object_list_prepend(obj->callbacks.down, fn); - break; - case EVAS_CALLBACK_MOUSE_UP: - obj->callbacks.up = evas_object_list_prepend(obj->callbacks.up, fn); - break; - case EVAS_CALLBACK_MOUSE_MOVE: - obj->callbacks.move = evas_object_list_prepend(obj->callbacks.move, fn); - break; - case EVAS_CALLBACK_FREE: - obj->callbacks.free = evas_object_list_prepend(obj->callbacks.free, fn); - break; - default: - free(fn); - return; - break; - } - if (!evas_list_alloc_error()) return; - MERR_BAD(); - if (!evas_mem_free(sizeof(Evas_List))) - { - if (!evas_mem_degrade(sizeof(Evas_List))) - { - MERR_FATAL(); - free(fn); - return; - } - } + case EVAS_CALLBACK_MOUSE_IN: + l_mod = &(obj->callbacks.in); + break; + case EVAS_CALLBACK_MOUSE_OUT: + l_mod = &(obj->callbacks.out); + break; + case EVAS_CALLBACK_MOUSE_DOWN: + l_mod = &(obj->callbacks.down); + break; + case EVAS_CALLBACK_MOUSE_UP: + l_mod = &(obj->callbacks.up); + break; + case EVAS_CALLBACK_MOUSE_MOVE: + l_mod = &(obj->callbacks.move); + break; + case EVAS_CALLBACK_FREE: + l_mod = &(obj->callbacks.free); + break; + case EVAS_CALLBACK_KEY_DOWN: + l_mod = &(obj->callbacks.key_down); + break; + case EVAS_CALLBACK_KEY_UP: + l_mod = &(obj->callbacks.key_up); + break; + case EVAS_CALLBACK_FOCUS_IN: + l_mod = &(obj->callbacks.obj_focus_in); + break; + case EVAS_CALLBACK_FOCUS_OUT: + l_mod = &(obj->callbacks.obj_focus_out); + break; + case EVAS_CALLBACK_SHOW: + l_mod = &(obj->callbacks.obj_show); + break; + case EVAS_CALLBACK_HIDE: + l_mod = &(obj->callbacks.obj_hide); + break; + case EVAS_CALLBACK_MOVE: + l_mod = &(obj->callbacks.obj_move); + break; + case EVAS_CALLBACK_RESIZE: + l_mod = &(obj->callbacks.obj_resize); + break; + case EVAS_CALLBACK_RESTACK: + l_mod = &(obj->callbacks.obj_restack); + break; + default: + free(fn); + return; + break; } - while (evas_list_alloc_error()); + *l_mod = evas_object_list_append(*l_mod, fn); } /** @@ -242,7 +343,7 @@ evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void ( * @p obj which was triggered by the event type @p type and was calling the * function @p func when triggered. If the callback is successful it will also * return the data pointer, passed to evas_object_event_callback_add() when - * the callback was added to the object. IF not successful NULL will be + * the callback was added to the object. If not successful NULL will be * returned. * * Example: @@ -287,6 +388,33 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, void ( case EVAS_CALLBACK_FREE: l_mod = &(obj->callbacks.free); break; + case EVAS_CALLBACK_KEY_DOWN: + l_mod = &(obj->callbacks.key_down); + break; + case EVAS_CALLBACK_KEY_UP: + l_mod = &(obj->callbacks.key_up); + break; + case EVAS_CALLBACK_FOCUS_IN: + l_mod = &(obj->callbacks.obj_focus_in); + break; + case EVAS_CALLBACK_FOCUS_OUT: + l_mod = &(obj->callbacks.obj_focus_out); + break; + case EVAS_CALLBACK_SHOW: + l_mod = &(obj->callbacks.obj_show); + break; + case EVAS_CALLBACK_HIDE: + l_mod = &(obj->callbacks.obj_hide); + break; + case EVAS_CALLBACK_MOVE: + l_mod = &(obj->callbacks.obj_move); + break; + case EVAS_CALLBACK_RESIZE: + l_mod = &(obj->callbacks.obj_resize); + break; + case EVAS_CALLBACK_RESTACK: + l_mod = &(obj->callbacks.obj_restack); + break; default: return NULL; break; diff --git a/legacy/evas/src/lib/canvas/evas_layer.c b/legacy/evas/src/lib/canvas/evas_layer.c index 5fd2703c90..757ddb8073 100644 --- a/legacy/evas/src/lib/canvas/evas_layer.c +++ b/legacy/evas/src/lib/canvas/evas_layer.c @@ -113,6 +113,7 @@ evas_object_layer_set(Evas_Object *obj, int l) MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); + if (evas_object_intercept_call_layer_set(obj, l)) return; if (obj->cur.layer == l) { evas_object_raise(obj); diff --git a/legacy/evas/src/lib/canvas/evas_object_inform.c b/legacy/evas/src/lib/canvas/evas_object_inform.c index c4fa60097d..7f7bfb1e78 100644 --- a/legacy/evas/src/lib/canvas/evas_object_inform.c +++ b/legacy/evas/src/lib/canvas/evas_object_inform.c @@ -2,284 +2,34 @@ #include "evas_private.h" #include "Evas.h" -typedef struct _Evas_Inform_Func_Node Evas_Inform_Func_Node; - -struct _Evas_Inform_Func_Node -{ - void (*func) (void *data, Evas_Object *obj); - void *data; -}; - /* local calls */ -static void evas_object_inform_init(Evas_Object *obj); -static void evas_object_inform_deinit(Evas_Object *obj); -static void evas_object_inform_list_add(Evas_Object *obj, Evas_List **l, void (*func) (void *data, Evas_Object *obj), void *data); -static void *evas_object_inform_list_del(Evas_Object *obj, Evas_List **list, void (*func) (void *data, Evas_Object *obj)); -static void evas_object_inform_call(Evas_Object *obj, Evas_List *list); - -static void -evas_object_inform_init(Evas_Object *obj) -{ - if (!obj->informers) - obj->informers = evas_mem_calloc(sizeof(Evas_Inform_Func)); -} - -static void -evas_object_inform_deinit(Evas_Object *obj) -{ - if (!obj->informers) return; - if ((obj->informers->show) || - (obj->informers->hide) || - (obj->informers->move) || - (obj->informers->resize) || - (obj->informers->restack)) return; - free(obj->informers); - obj->informers = NULL; -} - -static void -evas_object_inform_list_add(Evas_Object *obj, Evas_List **l, void (*func) (void *data, Evas_Object *obj), void *data) -{ - Evas_Inform_Func_Node *fn; - - fn = evas_mem_calloc(sizeof(Evas_Inform_Func_Node)); - if (!fn) return; - fn->func = func; - fn->data = data; - evas_object_inform_init(obj); - if (!obj->informers) - { - free(fn); - return; - } - do - { - *l = evas_list_append(*l, fn); - if (!evas_list_alloc_error()) return; - MERR_BAD(); - if (!evas_mem_free(sizeof(Evas_List))) - { - if (!evas_mem_degrade(sizeof(Evas_List))) - { - evas_object_inform_deinit(obj); - MERR_FATAL(); - free(fn); - return; - } - } - } - while (evas_list_alloc_error()); -} - -static void * -evas_object_inform_list_del(Evas_Object *obj, Evas_List **list, void (*func) (void *data, Evas_Object *obj)) -{ - if (!obj->informers) return NULL; - { - Evas_List *l; - - for (l = (*list); l; l = l->next) - { - Evas_Inform_Func_Node *fn; - - fn = l->data; - if (fn->func == func) - { - void *data; - - data = fn->data; - free(fn); - (*list) = evas_list_remove_list((*list), l); - evas_object_inform_deinit(obj); - return data; - } - } - } - return NULL; -} - -static void -evas_object_inform_call(Evas_Object *obj, Evas_List *list) -{ - Evas_List *l; - - for (l = list; l; l = l->next) - { - Evas_Inform_Func_Node *fn; - - fn = l->data; - fn->func(fn->data, obj); - } -} - -/* private calls */ - -void -evas_object_inform_cleanup(Evas_Object *obj) -{ - if (!obj->informers) return; - while (obj->informers->show) - { - free(obj->informers->show->data); - obj->informers->show = evas_list_remove(obj->informers->show, obj->informers->show->data); - } - while (obj->informers->hide) - { - free(obj->informers->hide->data); - obj->informers->hide = evas_list_remove(obj->informers->hide, obj->informers->hide->data); - } - while (obj->informers->move) - { - free(obj->informers->move->data); - obj->informers->move = evas_list_remove(obj->informers->move, obj->informers->move->data); - } - while (obj->informers->resize) - { - free(obj->informers->resize->data); - obj->informers->resize = evas_list_remove(obj->informers->resize, obj->informers->resize->data); - } - while (obj->informers->restack) - { - free(obj->informers->restack->data); - obj->informers->restack = evas_list_remove(obj->informers->restack, obj->informers->restack->data); - } - free(obj->informers); -} - void evas_object_inform_call_show(Evas_Object *obj) { - if (!obj->informers) return; - evas_object_inform_call(obj, obj->informers->show); + evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL); } void evas_object_inform_call_hide(Evas_Object *obj) { - if (!obj->informers) return; - evas_object_inform_call(obj, obj->informers->hide); + evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL); } void evas_object_inform_call_move(Evas_Object *obj) { - if (!obj->informers) return; - evas_object_inform_call(obj, obj->informers->move); + evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL); } void evas_object_inform_call_resize(Evas_Object *obj) { - if (!obj->informers) return; - evas_object_inform_call(obj, obj->informers->resize); + evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL); } void evas_object_inform_call_restack(Evas_Object *obj) { - if (!obj->informers) return; - evas_object_inform_call(obj, obj->informers->restack); -} - -/* public calls */ - -void -evas_object_inform_show_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return; - MAGIC_CHECK_END(); - if (!func) return; - evas_object_inform_list_add(obj, &(obj->informers->show), func, data); -} - -void * -evas_object_inform_show_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return NULL; - MAGIC_CHECK_END(); - if (!func) return NULL; - return evas_object_inform_list_del(obj, &(obj->informers->show), func); -} - -void -evas_object_inform_hide_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return; - MAGIC_CHECK_END(); - if (!func) return; - evas_object_inform_list_add(obj, &(obj->informers->hide), func, data); -} - -void * -evas_object_inform_hide_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return NULL; - MAGIC_CHECK_END(); - if (!func) return; - return evas_object_inform_list_del(obj, &(obj->informers->hide), func); -} - -void -evas_object_inform_move_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return; - MAGIC_CHECK_END(); - if (!func) return; - evas_object_inform_list_add(obj, &(obj->informers->move), func, data); -} - -void * -evas_object_inform_move_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return NULL; - MAGIC_CHECK_END(); - if (!func) return NULL; - return evas_object_inform_list_del(obj, &(obj->informers->move), func); -} - -void -evas_object_inform_resize_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return; - MAGIC_CHECK_END(); - if (!func) return; - evas_object_inform_list_add(obj, &(obj->informers->resize), func, data); -} - -void * -evas_object_inform_resize_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return NULL; - MAGIC_CHECK_END(); - if (!func) return NULL; - return evas_object_inform_list_del(obj, &(obj->informers->resize), func); -} - -void -evas_object_inform_restack_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return; - MAGIC_CHECK_END(); - if (!func) return; - evas_object_inform_list_add(obj, &(obj->informers->restack), func, data); -} - -void * -evas_object_inform_restack_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) -{ - MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); - return NULL; - MAGIC_CHECK_END(); - if (!func) return NULL; - return evas_object_inform_list_del(obj, &(obj->informers->restack), func); + evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL); } diff --git a/legacy/evas/src/lib/canvas/evas_object_intercept.c b/legacy/evas/src/lib/canvas/evas_object_intercept.c index dbbd66d804..2166b4d722 100644 --- a/legacy/evas/src/lib/canvas/evas_object_intercept.c +++ b/legacy/evas/src/lib/canvas/evas_object_intercept.c @@ -1,174 +1,472 @@ #include "evas_common.h" #include "evas_private.h" #include "Evas.h" + +/* local calls */ + +static void evas_object_intercept_init(Evas_Object *obj); +static void evas_object_intercept_deinit(Evas_Object *obj); + +static void +evas_object_intercept_init(Evas_Object *obj) +{ + /* MEM OK */ + if (!obj->interceptors) + obj->interceptors = evas_mem_calloc(sizeof(Evas_Intercept_Func)); +} + +static void +evas_object_intercept_deinit(Evas_Object *obj) +{ + /* MEM OK */ + if (!obj->interceptors) return; + if ((obj->interceptors->show.func) || + (obj->interceptors->hide.func) || + (obj->interceptors->move.func) || + (obj->interceptors->resize.func) || + (obj->interceptors->raise.func) || + (obj->interceptors->lower.func) || + (obj->interceptors->stack_above.func) || + (obj->interceptors->stack_below.func) || + (obj->interceptors->layer_set.func)) + return; + free(obj->interceptors); + obj->interceptors = NULL; +} + +/* private calls */ + +void +evas_object_intercept_cleanup(Evas_Object *obj) +{ + /* MEM OK */ + if (obj->interceptors) free(obj->interceptors); +} + +int +evas_object_intercept_call_show(Evas_Object *obj) +{ + /* MEM OK */ + int ret; + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->show.func; + if (obj->interceptors->show.func) + obj->interceptors->show.func(obj->interceptors->show.data, obj); + obj->intercepted = 0; + return ret; +} + +int +evas_object_intercept_call_hide(Evas_Object *obj) +{ + /* MEM OK */ + int ret; + + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->hide.func; + if (obj->interceptors->hide.func) + obj->interceptors->hide.func(obj->interceptors->hide.data, obj); + obj->intercepted = 0; + return ret; +} + +int +evas_object_intercept_call_move(Evas_Object *obj, double x, double y) +{ + /* MEM OK */ + int ret; + + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->move.func; + if (obj->interceptors->move.func) + obj->interceptors->move.func(obj->interceptors->move.data, obj, x, y); + obj->intercepted = 0; + return ret; +} + +int +evas_object_intercept_call_resize(Evas_Object *obj, double w, double h) +{ + /* MEM OK */ + int ret; + + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->resize.func; + if (obj->interceptors->resize.func) + obj->interceptors->resize.func(obj->interceptors->resize.data, obj, w, h); + obj->intercepted = 0; + return ret; +} + +int +evas_object_intercept_call_raise(Evas_Object *obj) +{ + /* MEM OK */ + int ret; + + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->raise.func; + if (obj->interceptors->raise.func) + obj->interceptors->raise.func(obj->interceptors->raise.data, obj); + obj->intercepted = 0; + return ret; +} + +int +evas_object_intercept_call_lower(Evas_Object *obj) +{ + /* MEM OK */ + int ret; + + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->lower.func; + if (obj->interceptors->lower.func) + obj->interceptors->lower.func(obj->interceptors->lower.data, obj); + obj->intercepted = 0; + return ret; +} + +int +evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above) +{ + /* MEM OK */ + int ret; + + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->stack_above.func; + if (obj->interceptors->stack_above.func) + obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, obj, above); + obj->intercepted = 0; + return ret; +} + +int +evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below) +{ + /* MEM OK */ + int ret; + + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->stack_below.func; + if (obj->interceptors->stack_below.func) + obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, obj, below); + obj->intercepted = 0; + return ret; +} + +int +evas_object_intercept_call_layer_set(Evas_Object *obj, int l) +{ + /* MEM OK */ + int ret; + + if (!obj->interceptors) return 0; + if (obj->intercepted) return 0; + obj->intercepted = 1; + ret = obj->interceptors->layer_set.func; + if (obj->interceptors->layer_set.func) + obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, obj, l); + obj->intercepted = 0; + return ret; +} + +/* public calls */ + void evas_object_intercept_show_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) { + /* MEM OK */ + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->show.func = func; + obj->interceptors->show.data = data; } void * evas_object_intercept_show_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->show.func = NULL; + data = obj->interceptors->show.data; + obj->interceptors->show.data = NULL; + evas_object_intercept_deinit(obj); + return data; } void evas_object_intercept_hide_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) { + /* MEM OK */ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->hide.func = func; + obj->interceptors->hide.data = data; } void * evas_object_intercept_hide_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->hide.func = NULL; + data = obj->interceptors->hide.data; + obj->interceptors->hide.data = NULL; + evas_object_intercept_deinit(obj); + return data; } void evas_object_intercept_move_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double x, double y), void *data) { + /* MEM OK */ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->move.func = func; + obj->interceptors->move.data = data; } void * evas_object_intercept_move_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double x, double y)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); - if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->move.func = NULL; + data = obj->interceptors->move.data; + obj->interceptors->move.data = NULL; + evas_object_intercept_deinit(obj); + return data; } void evas_object_intercept_resize_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double w, double h), void *data) { + /* MEM OK */ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->resize.func = func; + obj->interceptors->resize.data = data; } void * evas_object_intercept_resize_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, double w, double h)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); - if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->resize.func = NULL; + data = obj->interceptors->resize.data; + obj->interceptors->resize.data = NULL; + evas_object_intercept_deinit(obj); + return data; } void evas_object_intercept_raise_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) { + /* MEM OK */ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->raise.func = func; + obj->interceptors->raise.data = data; } void * evas_object_intercept_raise_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); - if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->raise.func = NULL; + data = obj->interceptors->raise.data; + obj->interceptors->raise.data = NULL; + evas_object_intercept_deinit(obj); + return data; } void evas_object_intercept_lower_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) { + /* MEM OK */ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->lower.func = func; + obj->interceptors->lower.data = data; } void * evas_object_intercept_lower_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); - if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->lower.func = NULL; + data = obj->interceptors->lower.data; + obj->interceptors->lower.data = NULL; + evas_object_intercept_deinit(obj); + return data; } void evas_object_intercept_stack_above_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above), void *data) { + /* MEM OK */ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->stack_above.func = func; + obj->interceptors->stack_above.data = data; } void * evas_object_intercept_stack_above_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); - if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->stack_above.func = NULL; + data = obj->interceptors->stack_above.data; + obj->interceptors->stack_above.data = NULL; + evas_object_intercept_deinit(obj); + return data; } void evas_object_intercept_stack_below_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below), void *data) { + /* MEM OK */ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->stack_below.func = func; + obj->interceptors->stack_below.data = data; } void * evas_object_intercept_stack_below_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); - if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->stack_below.func = NULL; + data = obj->interceptors->stack_below.data; + obj->interceptors->stack_below.data = NULL; + evas_object_intercept_deinit(obj); + return data; } void evas_object_intercept_layer_set_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l), void *data) { + /* MEM OK */ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!func) return; + evas_object_intercept_init(obj); + if (!obj->interceptors) return; + obj->interceptors->layer_set.func = func; + obj->interceptors->layer_set.data = data; } void * evas_object_intercept_layer_set_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l)) { + /* MEM OK */ + void *data; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); - if (!func) return NULL; - return NULL; + if (!obj->interceptors) return NULL; + obj->interceptors->layer_set.func = NULL; + data = obj->interceptors->layer_set.data; + obj->interceptors->layer_set.data = NULL; + evas_object_intercept_deinit(obj); + return data; } diff --git a/legacy/evas/src/lib/canvas/evas_object_main.c b/legacy/evas/src/lib/canvas/evas_object_main.c index e7e9b729ef..909f0196d0 100644 --- a/legacy/evas/src/lib/canvas/evas_object_main.c +++ b/legacy/evas/src/lib/canvas/evas_object_main.c @@ -20,7 +20,7 @@ void evas_object_free(Evas_Object *obj, int clean_layer) { evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL); - evas_object_inform_cleanup(obj); + evas_object_intercept_cleanup(obj); evas_object_smart_cleanup(obj); obj->func->free(obj); if (obj->name) @@ -41,54 +41,7 @@ evas_object_free(Evas_Object *obj, int clean_layer) obj->clip.changes = evas_list_remove(obj->clip.changes, r); free(r); } - while (obj->callbacks.in) - { - Evas_Func_Node *fn; - - fn = (Evas_Func_Node *)obj->callbacks.in; - obj->callbacks.in = evas_object_list_remove(obj->callbacks.in, fn); - free(fn); - } - while (obj->callbacks.out) - { - Evas_Func_Node *fn; - - fn = (Evas_Func_Node *)obj->callbacks.out; - obj->callbacks.out = evas_object_list_remove(obj->callbacks.out, fn); - free(fn); - } - while (obj->callbacks.down) - { - Evas_Func_Node *fn; - - fn = (Evas_Func_Node *)obj->callbacks.down; - obj->callbacks.down = evas_object_list_remove(obj->callbacks.down, fn); - free(fn); - } - while (obj->callbacks.up) - { - Evas_Func_Node *fn; - - fn = (Evas_Func_Node *)obj->callbacks.up; - obj->callbacks.up = evas_object_list_remove(obj->callbacks.up, fn); - free(fn); - } - while (obj->callbacks.move) - { - Evas_Func_Node *fn; - - fn = (Evas_Func_Node *)obj->callbacks.move; - obj->callbacks.move = evas_object_list_remove(obj->callbacks.move, fn); - free(fn); - } - while (obj->callbacks.free) - { - Evas_Func_Node *fn; - - fn = (Evas_Func_Node *)obj->callbacks.free; - obj->callbacks.free = evas_object_list_remove(obj->callbacks.free, fn); - free(fn); - } + evas_object_event_callback_cleanup(obj); while (obj->data.elements) { Evas_Data_Node *node; @@ -471,6 +424,7 @@ evas_object_move(Evas_Object *obj, double x, double y) MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); + if (evas_object_intercept_call_move(obj, x, y)) return; if (obj->smart.smart) { if (obj->smart.smart->func_move) @@ -512,6 +466,7 @@ evas_object_resize(Evas_Object *obj, double w, double h) return; MAGIC_CHECK_END(); if (w < 0.0) w = 0.0; if (h < 0.0) h = 0.0; + if (evas_object_intercept_call_resize(obj, w, h)) return; if (obj->smart.smart) { if (obj->smart.smart->func_resize) @@ -562,6 +517,7 @@ evas_object_show(Evas_Object *obj) MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); + if (evas_object_intercept_call_show(obj)) return; if (obj->smart.smart) { if (obj->smart.smart->func_show) @@ -593,6 +549,7 @@ evas_object_hide(Evas_Object *obj) MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); + if (evas_object_intercept_call_hide(obj)) return; if (obj->smart.smart) { if (obj->smart.smart->func_hide) diff --git a/legacy/evas/src/lib/canvas/evas_stack.c b/legacy/evas/src/lib/canvas/evas_stack.c index a7cd3fd88f..5f07291ffc 100644 --- a/legacy/evas/src/lib/canvas/evas_stack.c +++ b/legacy/evas/src/lib/canvas/evas_stack.c @@ -47,6 +47,7 @@ evas_object_raise(Evas_Object *obj) MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); + if (evas_object_intercept_call_raise(obj)) return; if (obj->smart.smart) { if (obj->smart.smart->func_raise) @@ -83,6 +84,7 @@ evas_object_lower(Evas_Object *obj) MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); + if (evas_object_intercept_call_lower(obj)) return; if (obj->smart.smart) { if (obj->smart.smart->func_lower) @@ -122,6 +124,7 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above) MAGIC_CHECK(above, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); + if (evas_object_intercept_call_stack_above(obj, above)) return; if (obj->smart.smart) { if (obj->smart.smart->func_stack_above) @@ -166,6 +169,7 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below) MAGIC_CHECK(below, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); + if (evas_object_intercept_call_stack_below(obj, below)) return; if (obj->smart.smart) { if (obj->smart.smart->func_stack_below) diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index e8de53ef65..527cba740c 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -25,27 +25,33 @@ typedef enum _Evas_Callback_Type EVAS_CALLBACK_KEY_DOWN, EVAS_CALLBACK_KEY_UP, EVAS_CALLBACK_FOCUS_IN, - EVAS_CALLBACK_FOCUS_OUT + EVAS_CALLBACK_FOCUS_OUT, + EVAS_CALLBACK_SHOW, + EVAS_CALLBACK_HIDE, + EVAS_CALLBACK_MOVE, + EVAS_CALLBACK_RESIZE, + EVAS_CALLBACK_RESTACK } Evas_Callback_Type; typedef struct _Evas_Rectangle Evas_Rectangle; -struct _Evas_Rectangle -{ - int x, y, w, h; -}; -typedef struct _Evas Evas; -typedef struct _Evas_Layer Evas_Layer; -typedef struct _Evas_Object Evas_Object; -typedef struct _Evas_Data_Node Evas_Data_Node; -typedef struct _Evas_Func_Node Evas_Func_Node; -typedef struct _Evas_Func Evas_Func; -typedef struct _Evas_Object_Func Evas_Object_Func; -typedef struct _Evas_Key Evas_Key; -typedef struct _Evas_Modifier Evas_Modifier; -typedef struct _Evas_Lock Evas_Lock; -typedef struct _Evas_Smart Evas_Smart; -typedef void Evas_Performance; +typedef struct _Evas Evas; +typedef struct _Evas_Layer Evas_Layer; +typedef struct _Evas_Object Evas_Object; +typedef struct _Evas_Data_Node Evas_Data_Node; +typedef struct _Evas_Func_Node Evas_Func_Node; +typedef struct _Evas_Func Evas_Func; +typedef struct _Evas_Object_Func Evas_Object_Func; +typedef struct _Evas_Key Evas_Key; +typedef struct _Evas_Modifier Evas_Modifier; +typedef struct _Evas_Lock Evas_Lock; +typedef struct _Evas_Smart Evas_Smart; +typedef struct _Evas_Intercept_Func Evas_Intercept_Func; +typedef struct _Evas_Intercept_Func_Basic Evas_Intercept_Func_Basic; +typedef struct _Evas_Intercept_Func_SizePos Evas_Intercept_Func_SizePos; +typedef struct _Evas_Intercept_Func_Obj Evas_Intercept_Func_Obj; +typedef struct _Evas_Intercept_Func_Int Evas_Intercept_Func_Int; +typedef void Evas_Performance; #define MAGIC_EVAS 0x70777770 #define MAGIC_OBJ 0x71777770 @@ -88,16 +94,46 @@ if (_r) \ #define MEM_TRY_CALLOC(_ptr, _size) - -typedef struct _Evas_Inform_Func Evas_Inform_Func; - -struct _Evas_Inform_Func +struct _Evas_Rectangle { - Evas_List *show; - Evas_List *hide; - Evas_List *move; - Evas_List *resize; - Evas_List *restack; + int x, y, w, h; +}; + +struct _Evas_Intercept_Func_Basic +{ + void (*func) (void *data, Evas_Object *obj); + void *data; +}; + +struct _Evas_Intercept_Func_SizePos +{ + void (*func) (void *data, Evas_Object *obj, double x, double y); + void *data; +}; + +struct _Evas_Intercept_Func_Obj +{ + void (*func) (void *data, Evas_Object *obj, Evas_Object *obj2); + void *data; +}; + +struct _Evas_Intercept_Func_Int +{ + void (*func) (void *data, Evas_Object *obj, int n); + void *data; +}; + +struct _Evas_Intercept_Func +{ + Evas_Intercept_Func_Basic show; + Evas_Intercept_Func_Basic hide; + Evas_Intercept_Func_SizePos move; + Evas_Intercept_Func_SizePos resize; + Evas_Intercept_Func_Basic raise; + Evas_Intercept_Func_Basic lower; + Evas_Intercept_Func_Obj stack_above; + Evas_Intercept_Func_Obj stack_below; + Evas_Intercept_Func_Int layer_set; }; struct _Evas_Smart @@ -273,7 +309,7 @@ struct _Evas_Object int delete_me; - Evas_Inform_Func *informers; + Evas_Intercept_Func *interceptors; struct { Evas_List *elements; @@ -286,6 +322,15 @@ struct _Evas_Object Evas_Object_List *up; Evas_Object_List *move; Evas_Object_List *free; + Evas_Object_List *key_down; + Evas_Object_List *key_up; + Evas_Object_List *obj_focus_in; + Evas_Object_List *obj_focus_out; + Evas_Object_List *obj_show; + Evas_Object_List *obj_hide; + Evas_Object_List *obj_move; + Evas_Object_List *obj_resize; + Evas_Object_List *obj_restack; } callbacks; struct { @@ -476,12 +521,22 @@ void evas_object_smart_unuse(Evas_Smart *s); void evas_object_smart_del(Evas_Object *obj); void evas_object_smart_cleanup(Evas_Object *obj); void *evas_mem_calloc(int size); -void evas_object_inform_cleanup(Evas_Object *obj); +void evas_object_event_callback_cleanup(Evas_Object *obj); void evas_object_inform_call_show(Evas_Object *obj); void evas_object_inform_call_hide(Evas_Object *obj); void evas_object_inform_call_move(Evas_Object *obj); void evas_object_inform_call_resize(Evas_Object *obj); void evas_object_inform_call_restack(Evas_Object *obj); +void evas_object_intercept_cleanup(Evas_Object *obj); +int evas_object_intercept_call_show(Evas_Object *obj); +int evas_object_intercept_call_hide(Evas_Object *obj); +int evas_object_intercept_call_move(Evas_Object *obj, double x, double y); +int evas_object_intercept_call_resize(Evas_Object *obj, double w, double h); +int evas_object_intercept_call_raise(Evas_Object *obj); +int evas_object_intercept_call_lower(Evas_Object *obj); +int evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above); +int evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below); +int evas_object_intercept_call_layer_set(Evas_Object *obj, int l); extern int _evas_alloc_error;