Add function to remove all event callbacks on the box 19/43919/2
authorjinwoo.shin <jw0227.shin@samsung.com>
Wed, 15 Jul 2015 10:30:24 +0000 (19:30 +0900)
committerjinwoo.shin <jw0227.shin@samsung.com>
Wed, 15 Jul 2015 10:33:27 +0000 (19:33 +0900)
Change-Id: I305f22f66feb41d82498e08b0ab119a572b8423b
Signed-off-by: jinwoo.shin <jw0227.shin@samsung.com>
src/layout_channelinfo_search.c

index 306a59c..fbedb1d 100644 (file)
@@ -71,7 +71,7 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                _tune_channel(data);
 }
 
-void _mouse_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
+static void _mouse_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Mouse_Down *ev)
 {
        _tune_channel(data);
@@ -82,6 +82,24 @@ static input_handler channel_handler = {
        .mouse_down = _mouse_down_cb,
 };
 
+static void _release_channel_handler(Evas_Object *obj)
+{
+       Eina_List *child, *l;
+       Evas_Object *ly;
+
+       if (!obj)
+               return;
+
+       child = elm_box_children_get(obj);
+
+       EINA_LIST_FOREACH(child, l, ly) {
+               inputmgr_remove_callback(ly, &channel_handler);
+       }
+
+       if (child)
+               eina_list_free(child);
+}
+
 static void _load_channel_list(struct _priv *priv, Eina_List *channel_list)
 {
        Evas_Object *ly, *divider, *first;
@@ -104,6 +122,7 @@ static void _load_channel_list(struct _priv *priv, Eina_List *channel_list)
                        DIVIDER_WIDTH, DIVIDER_HEIGHT);
        evas_object_show(divider);
 
+       _release_channel_handler(priv->box);
        elm_box_clear(priv->box);
 
        first = NULL;