provide fast-path for re-swallow

SVN revision: 43292
This commit is contained in:
Carsten Haitzler 2009-10-26 08:26:10 +00:00
parent 65bb03f891
commit 6e4f0dad8e
1 changed files with 27 additions and 14 deletions

View File

@ -3879,20 +3879,33 @@ _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow)
{ {
if (rp->swallowed_object) if (rp->swallowed_object)
{ {
evas_object_smart_member_del(rp->swallowed_object); if (rp->swallowed_object != obj_swallow)
evas_object_event_callback_del_full(rp->swallowed_object, {
EVAS_CALLBACK_FREE, evas_object_smart_member_del(rp->swallowed_object);
_edje_object_part_swallow_free_cb, evas_object_event_callback_del_full(rp->swallowed_object,
rp->edje->obj); EVAS_CALLBACK_FREE,
evas_object_event_callback_del_full(rp->swallowed_object, _edje_object_part_swallow_free_cb,
EVAS_CALLBACK_CHANGED_SIZE_HINTS, rp->edje->obj);
_edje_object_part_swallow_changed_hints_cb, evas_object_event_callback_del_full(rp->swallowed_object,
rp->edje->obj); EVAS_CALLBACK_CHANGED_SIZE_HINTS,
evas_object_clip_unset(rp->swallowed_object); _edje_object_part_swallow_changed_hints_cb,
evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); rp->edje->obj);
if (rp->part->mouse_events) evas_object_clip_unset(rp->swallowed_object);
_edje_callbacks_del(rp->swallowed_object); evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part");
rp->swallowed_object = NULL; if (rp->part->mouse_events)
_edje_callbacks_del(rp->swallowed_object);
rp->swallowed_object = NULL;
}
else
{
#ifdef EDJE_CALC_CACHE
rp->invalidate = 1;
#endif
_edje_real_part_swallow_hints_update(rp);
rp->edje->dirty = 1;
_edje_recalc(rp->edje);
return;
}
} }
#ifdef EDJE_CALC_CACHE #ifdef EDJE_CALC_CACHE
rp->invalidate = 1; rp->invalidate = 1;