diff options
Diffstat (limited to '')
-rw-r--r-- | libraries/evas/src/lib/canvas/evas_object_smart.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libraries/evas/src/lib/canvas/evas_object_smart.c b/libraries/evas/src/lib/canvas/evas_object_smart.c index a7dfcdf..69d7f3b 100644 --- a/libraries/evas/src/lib/canvas/evas_object_smart.c +++ b/libraries/evas/src/lib/canvas/evas_object_smart.c | |||
@@ -402,6 +402,37 @@ evas_object_smart_callback_del(Evas_Object *obj, const char *event, Evas_Smart_C | |||
402 | return NULL; | 402 | return NULL; |
403 | } | 403 | } |
404 | 404 | ||
405 | EAPI void * | ||
406 | evas_object_smart_callback_del_full(Evas_Object *obj, const char *event, Evas_Smart_Cb func, const void *data) | ||
407 | { | ||
408 | Evas_Object_Smart *o; | ||
409 | Eina_List *l; | ||
410 | Evas_Smart_Callback *cb; | ||
411 | |||
412 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
413 | return NULL; | ||
414 | MAGIC_CHECK_END(); | ||
415 | o = (Evas_Object_Smart *)(obj->object_data); | ||
416 | MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART); | ||
417 | return NULL; | ||
418 | MAGIC_CHECK_END(); | ||
419 | if (!event) return NULL; | ||
420 | EINA_LIST_FOREACH(o->callbacks, l, cb) | ||
421 | { | ||
422 | if ((!strcmp(cb->event, event)) && (cb->func == func) && (cb->func_data == data)) | ||
423 | { | ||
424 | void *ret; | ||
425 | |||
426 | ret = cb->func_data; | ||
427 | cb->delete_me = 1; | ||
428 | o->deletions_waiting = 1; | ||
429 | evas_object_smart_callbacks_clear(obj); | ||
430 | return ret; | ||
431 | } | ||
432 | } | ||
433 | return NULL; | ||
434 | } | ||
435 | |||
405 | EAPI void | 436 | EAPI void |
406 | evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event_info) | 437 | evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event_info) |
407 | { | 438 | { |