elm_gesture_layer.c: add EVAS_CALLBACK_DEL to the target object. The target object...
authorShinwoo Kim <cinoo.kim@samsung.com>
Mon, 3 Jun 2013 12:27:27 +0000 (21:27 +0900)
committerSungho Kwak <sungho1.kwak@samsung.com>
Wed, 12 Jun 2013 05:33:25 +0000 (14:33 +0900)
Change-Id: Ifc29d0dd6b8de748da61238d326ced0c7b366e26

src/lib/elm_gesture_layer.c

index dbdbabf..a247cdf 100644 (file)
@@ -210,6 +210,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. */
@@ -948,6 +950,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
  *
@@ -986,6 +997,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);
 }
 
 /**
@@ -1027,6 +1041,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);
 }
 
 /**