From 29d3445751f034d5d00f5dc976826cdf84b5a402 Mon Sep 17 00:00:00 2001 From: hermet Date: Fri, 2 Nov 2012 04:34:00 +0000 Subject: [PATCH] edje - backport 78818 git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/branches/edje-1.7@78823 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- ChangeLog | 4 ++++ NEWS | 1 + src/lib/edje_calc.c | 3 ++- src/lib/edje_util.c | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0d1a39a..b2218a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -597,3 +597,7 @@ 2012-10-31 ChunEon Park (Hermet) * Fix to update the text classes when text classes are changed. + +2012-11-02 ChunEon Park (Hermet) + + * Fix to not update map uv for proxy diff --git a/NEWS b/NEWS index a5e29a6..fe23c4c 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ Fixes: * fix scale_set with edje containing boxes and/or tables * fix edje_cc to use max, not default compression * fix edje_text_class_set to update the text classes correctly. + * fix to not update map uv for proxy Edje 1.7.1 diff --git a/src/lib/edje_calc.c b/src/lib/edje_calc.c index 84f8090..f00db4e 100644 --- a/src/lib/edje_calc.c +++ b/src/lib/edje_calc.c @@ -3006,7 +3006,8 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta evas_map_util_points_populate_from_object(map, ep->object); if (ep->part->type == EDJE_PART_TYPE_IMAGE || ((ep->part->type == EDJE_PART_TYPE_SWALLOW) && - (!strcmp(evas_object_type_get(mo), "image"))) + (!strcmp(evas_object_type_get(mo), "image") && + (!evas_object_image_source_get(mo)))) ) { int iw = 1, ih = 1; diff --git a/src/lib/edje_util.c b/src/lib/edje_util.c index b6d2b3f..18aa160 100644 --- a/src/lib/edje_util.c +++ b/src/lib/edje_util.c @@ -5039,6 +5039,31 @@ _edje_object_part_swallow_changed_hints_cb(void *data, __UNUSED__ Evas *e, __UNU } void +_edje_object_part_swallow_image_resize_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Edje_Real_Part *rp = data; + Evas_Coord w, h; + Evas_Map *map; + + if (!rp->chosen_description->map.on) return; + if (evas_object_image_source_get(rp->typedata.swallow->swallowed_object)) + return; + + if ((rp->type != EDJE_RP_TYPE_SWALLOW) || + (!rp->typedata.swallow)) return; + map = (Evas_Map *)evas_object_map_get(rp->typedata.swallow->swallowed_object); + if (!map) return; + + evas_object_image_size_get(rp->typedata.swallow->swallowed_object, &w, &h); + evas_map_point_image_uv_set(map, 0, 0, 0); + evas_map_point_image_uv_set(map, 1, w, 0); + evas_map_point_image_uv_set(map, 2, w, h); + evas_map_point_image_uv_set(map, 3, 0, h); + + evas_object_map_set(rp->typedata.swallow->swallowed_object, map); +} + +void _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow, Eina_Bool hints_update) @@ -5079,6 +5104,12 @@ _edje_real_part_swallow(Edje_Real_Part *rp, _edje_object_part_swallow_changed_hints_cb, rp); + //If the map is enabled, uv should be updated when image size is changed. + if (!strcmp(evas_object_type_get(rp->typedata.swallow->swallowed_object), "image")) + evas_object_event_callback_add(obj_swallow, EVAS_CALLBACK_IMAGE_RESIZE, + _edje_object_part_swallow_image_resize_cb, + rp); + if (hints_update) _edje_real_part_swallow_hints_update(rp); @@ -5116,6 +5147,11 @@ _edje_real_part_swallow_clear(Edje_Real_Part *rp) EVAS_CALLBACK_CHANGED_SIZE_HINTS, _edje_object_part_swallow_changed_hints_cb, rp); + if (!strcmp(evas_object_type_get(rp->typedata.swallow->swallowed_object), "image")) + evas_object_event_callback_del_full(rp->typedata.swallow->swallowed_object, + EVAS_CALLBACK_IMAGE_RESIZE, + _edje_object_part_swallow_image_resize_cb, + rp); evas_object_clip_unset(rp->swallowed_object); evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); if (rp->part->mouse_events) -- 2.7.4