edje: correctly unswallow things on object destruction.

SVN revision: 72061
This commit is contained in:
Cedric BAIL 2012-06-13 06:48:41 +00:00
parent 8414915d9b
commit 73ba558ac8
1 changed files with 11 additions and 7 deletions

View File

@ -80,7 +80,9 @@ _edje_user_definition_free(Edje_User_Defined *eud)
{
case EDJE_USER_SWALLOW:
child = eud->u.swallow.child;
edje_object_part_unswallow(eud->ed->obj, child);
rp = _edje_real_part_recursive_get(eud->ed, eud->part);
_edje_real_part_swallow_clear(rp);
rp->swallowed_object = NULL;
break;
case EDJE_USER_BOX_PACK:
child = eud->u.box.child;
@ -2814,7 +2816,7 @@ edje_object_part_unswallow(Evas_Object *obj, Evas_Object *obj_swallow)
evas_object_event_callback_del_full(rp->swallowed_object,
EVAS_CALLBACK_FREE,
_edje_object_part_swallow_free_cb,
rp->edje->obj);
rp);
evas_object_event_callback_del_full(rp->swallowed_object,
EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_edje_object_part_swallow_changed_hints_cb,
@ -4918,10 +4920,12 @@ _edje_block_violate(Edje *ed)
void
_edje_object_part_swallow_free_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *edje_obj;
Edje_Real_Part *rp;
rp = data;
_edje_real_part_swallow_clear(rp);
rp->swallowed_object = NULL;
edje_obj = data;
edje_object_part_unswallow(edje_obj, obj);
return;
}
@ -5052,7 +5056,7 @@ _edje_real_part_swallow(Edje_Real_Part *rp,
evas_object_event_callback_add(rp->swallowed_object,
EVAS_CALLBACK_DEL,
_edje_object_part_swallow_free_cb,
rp->edje->obj);
rp);
evas_object_event_callback_add(rp->swallowed_object,
EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_edje_object_part_swallow_changed_hints_cb,
@ -5090,7 +5094,7 @@ _edje_real_part_swallow_clear(Edje_Real_Part *rp)
evas_object_event_callback_del_full(rp->swallowed_object,
EVAS_CALLBACK_FREE,
_edje_object_part_swallow_free_cb,
rp->edje->obj);
rp);
evas_object_event_callback_del_full(rp->swallowed_object,
EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_edje_object_part_swallow_changed_hints_cb,