From: Enlightenment S. <no-...@en...> - 2012-06-04 01:24:14
|
Log: edje: remove object from the tracked list when they are deleted. Author: cedric Date: 2012-06-03 18:24:07 -0700 (Sun, 03 Jun 2012) New Revision: 71672 Trac: http://trac.enlightenment.org/e/changeset/71672 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2012-06-03 23:00:07 UTC (rev 71671) +++ trunk/edje/src/lib/edje_util.c 2012-06-04 01:24:07 UTC (rev 71672) @@ -3994,10 +3994,34 @@ } static void -_edje_table_child_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child __UNUSED__, void *einfo __UNUSED__) +_edje_table_child_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child, void *einfo __UNUSED__) { + Edje_User_Defined *eud; + Eina_List *l; Edje_Real_Part *rp = data; + EINA_LIST_FOREACH(rp->edje->user_defined, l, eud) + if (rp->part->type == EDJE_PART_TYPE_BOX) + { + if (eud->type == EDJE_USER_BOX_PACK && + eud->u.box.child == child && + !strcmp(rp->part->name, eud->part)) + { + _edje_user_definition_free(eud); + break; + } + } + else if (rp->part->type == EDJE_PART_TYPE_TABLE) + { + if (eud->type == EDJE_USER_TABLE_PACK && + eud->u.table.child == child && + !strcmp(rp->part->name, eud->part)) + { + _edje_user_definition_free(eud); + break; + } + } + rp->edje->dirty = 1; rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE @@ -4066,7 +4090,6 @@ if (rp->part->type != EDJE_PART_TYPE_TABLE) return EINA_FALSE; r = _edje_real_part_table_pack(rp, child_obj, col, row, colspan, rowspan); - if (r) { eud = _edje_user_definition_new(EDJE_USER_TABLE_PACK, part, ed); |