From: raster Date: Mon, 26 Oct 2009 08:26:10 +0000 (+0000) Subject: provide fast-path for re-swallow X-Git-Tag: 2.0_alpha~163^2~788 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fb53b12ccaf74621a5b6a7cbf75b2552bc74817d;p=framework%2Fuifw%2Fedje.git provide fast-path for re-swallow git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@43292 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/edje_util.c b/src/lib/edje_util.c index 1c3c68f..000abdc 100644 --- a/src/lib/edje_util.c +++ b/src/lib/edje_util.c @@ -3879,20 +3879,33 @@ _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow) { if (rp->swallowed_object) { - evas_object_smart_member_del(rp->swallowed_object); - evas_object_event_callback_del_full(rp->swallowed_object, - EVAS_CALLBACK_FREE, - _edje_object_part_swallow_free_cb, - rp->edje->obj); - evas_object_event_callback_del_full(rp->swallowed_object, - EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _edje_object_part_swallow_changed_hints_cb, - rp->edje->obj); - evas_object_clip_unset(rp->swallowed_object); - evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); - if (rp->part->mouse_events) - _edje_callbacks_del(rp->swallowed_object); - rp->swallowed_object = NULL; + if (rp->swallowed_object != obj_swallow) + { + evas_object_smart_member_del(rp->swallowed_object); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb, + rp->edje->obj); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp->edje->obj); + evas_object_clip_unset(rp->swallowed_object); + evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); + 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 rp->invalidate = 1;