edje - backport 78818
authorhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 2 Nov 2012 04:34:00 +0000 (04:34 +0000)
committerhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 2 Nov 2012 04:34:00 +0000 (04:34 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/branches/edje-1.7@78823 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
NEWS
src/lib/edje_calc.c
src/lib/edje_util.c

index 0d1a39a..b2218a6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 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 (file)
--- 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
 
index 84f8090..f00db4e 100644 (file)
@@ -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;
index b6d2b3f..18aa160 100644 (file)
@@ -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)