From: Carsten Haitzler (Rasterman) Date: Sun, 3 Jul 2016 05:04:45 +0000 (+0900) Subject: elm layout - add and delete signal cbs from the same consistent obj X-Git-Tag: upstream/1.20.0~5408 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6ab167afa1e574d641081554a0ebe80f79645971;p=platform%2Fupstream%2Fefl.git elm layout - add and delete signal cbs from the same consistent obj elm layout signal handling was all over the place. using 3 different ways of adding or deleteing signals from the object. it uses either obj directly, eo_super(obj) or wd->resize_obj. come on. be consistent. so using wd->resize_obj worked before and now works properly with sgnal cbs PROPELY deleted unlike before. @fix --- diff --git a/src/lib/elementary/elm_layout.c b/src/lib/elementary/elm_layout.c index 65b7661..97e7bc3 100644 --- a/src/lib/elementary/elm_layout.c +++ b/src/lib/elementary/elm_layout.c @@ -938,6 +938,8 @@ _elm_layout_edje_object_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *sd, esd = ELM_NEW(Edje_Signal_Data); if (!esd) return; + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); + esd->obj = obj; esd->func = func_cb; esd->emission = eina_stringshare_add(emission); @@ -946,7 +948,7 @@ _elm_layout_edje_object_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *sd, sd->edje_signals = eina_list_append(sd->edje_signals, esd); edje_object_signal_callback_add - (eo_super(obj, MY_CLASS), emission, source, _edje_signal_callback, esd); + (wd->resize_obj, emission, source, _edje_signal_callback, esd); } EAPI void * @@ -964,6 +966,8 @@ _elm_layout_edje_object_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *sd, Eina_List *l; void *data_ptr; + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); + EINA_LIST_FOREACH(sd->edje_signals, l, esd) { if ((esd->func == func_cb) && (!strcmp(esd->emission, emission)) && @@ -975,7 +979,7 @@ _elm_layout_edje_object_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *sd, data_ptr = esd->data; edje_obj_signal_callback_del - (obj, emission, source, _edje_signal_callback, esd); + (wd->resize_obj, emission, source, _edje_signal_callback, esd); free(esd); return data_ptr; /* stop at 1st match */