elm_gesture_layer.c: add EVAS_CALLBACK_DEL to the target object. The target object could be deleted before deletion of the gesture layer.

This commit is contained in:
Shinwoo Kim 2013-06-03 20:48:15 +09:00
parent b59ce96e86
commit 5c6b745ea7
1 changed files with 17 additions and 0 deletions

View File

@ -213,6 +213,8 @@ static void _event_process(void *data,
void *event_info,
Evas_Callback_Type event_type);
static void _callbacks_unregister(Evas_Object *obj);
/* Should be the same order as _Elm_Gesture_Type */
static Tests_Array_Funcs _glayer_tests_array[] = {
{ NULL, NULL, NULL }, /** Because someone made an awful mistake. */
@ -947,6 +949,15 @@ _multi_up_cb(void *data,
_event_process(data, obj, event_info, EVAS_CALLBACK_MULTI_UP);
}
static void
_target_del_cb(void *data,
Evas *e __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
_callbacks_unregister(data);
}
/**
* @internal
*
@ -985,6 +996,9 @@ _callbacks_register(Evas_Object *obj)
(sd->target, EVAS_CALLBACK_KEY_DOWN, _key_down_cb, obj);
evas_object_event_callback_add
(sd->target, EVAS_CALLBACK_KEY_UP, _key_up_cb, obj);
evas_object_event_callback_add
(sd->target, EVAS_CALLBACK_DEL, _target_del_cb, obj);
}
/**
@ -1026,6 +1040,9 @@ _callbacks_unregister(Evas_Object *obj)
(sd->target, EVAS_CALLBACK_KEY_DOWN, _key_down_cb, obj);
evas_object_event_callback_del_full
(sd->target, EVAS_CALLBACK_KEY_UP, _key_up_cb, obj);
evas_object_event_callback_del_full
(sd->target, EVAS_CALLBACK_DEL, _target_del_cb, obj);
}
/**