From: cedric Date: Wed, 29 Jun 2011 13:24:22 +0000 (+0000) Subject: elementary: fix clip and smart child issue with elm_icon. X-Git-Tag: REL_F_I9500_20120323_1~17^2~2452 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3aea61c827c0863158c3efbfe7d886337fa4fb67;p=framework%2Fuifw%2Felementary.git elementary: fix clip and smart child issue with elm_icon. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@60816 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/els_icon.c b/src/lib/els_icon.c index e874101..3b089db 100644 --- a/src/lib/els_icon.c +++ b/src/lib/els_icon.c @@ -51,14 +51,17 @@ _els_smart_icon_add(Evas *evas) } static void -_preloaded(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event __UNUSED__) +_preloaded(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event __UNUSED__) { Smart_Data *sd = data; sd->preloading = EINA_FALSE; - if (sd->show) - evas_object_show(sd->obj); - evas_object_del(sd->prev); + if (obj == sd->obj) + { + if (sd->show) + evas_object_show(sd->obj); + } + if (sd->prev) evas_object_del(sd->prev); sd->prev = NULL; } @@ -72,26 +75,24 @@ _els_smart_icon_file_key_set(Evas_Object *obj, const char *file, const char *key if (!sd) return EINA_FALSE; /* smart code here */ if (sd->prev) evas_object_del(sd->prev); + pclip = evas_object_clip_get(sd->obj); if (sd->obj) sd->prev = sd->obj; sd->obj = evas_object_image_add(evas_object_evas_get(obj)); evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_IMAGE_PRELOADED, _preloaded, sd); evas_object_smart_member_add(sd->obj, obj); + if (sd->prev) evas_object_smart_member_add(sd->prev, obj); evas_object_image_scale_hint_set(sd->obj, EVAS_IMAGE_SCALE_HINT_STATIC); + evas_object_clip_set(sd->obj, pclip); + + sd->edje = EINA_FALSE; - if (sd->edje) - { - pclip = evas_object_clip_get(sd->obj); - evas_object_clip_set(sd->obj, pclip); - sd->edje = EINA_FALSE; - } if (!sd->size) evas_object_image_load_size_set(sd->obj, sd->size, sd->size); evas_object_image_file_set(sd->obj, file, key); sd->preloading = EINA_TRUE; sd->show = EINA_TRUE; evas_object_hide(sd->obj); - evas_object_show(sd->obj); evas_object_image_preload(sd->obj, EINA_FALSE); if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE) { @@ -111,6 +112,9 @@ _els_smart_icon_file_edje_set(Evas_Object *obj, const char *file, const char *pa sd = evas_object_smart_data_get(obj); if (!sd) return EINA_FALSE; /* smart code here */ + if (sd->prev) evas_object_del(sd->prev); + sd->prev = NULL; + if (!sd->edje) { pclip = evas_object_clip_get(sd->obj); @@ -623,9 +627,11 @@ _smart_show(Evas_Object *obj) if (!sd) return; sd->show = EINA_TRUE; if (!sd->preloading) - evas_object_show(sd->obj); - else if (sd->prev) - evas_object_show(sd->prev); + { + evas_object_show(sd->obj); + if (sd->prev) evas_object_del(sd->prev); + sd->prev = NULL; + } } static void @@ -637,7 +643,8 @@ _smart_hide(Evas_Object *obj) if (!sd) return; sd->show = EINA_FALSE; evas_object_hide(sd->obj); - if (sd->prev) evas_object_hide(sd->prev); + if (sd->prev) evas_object_del(sd->prev); + sd->prev = NULL; } static void