raster pushed a commit to branch master.

commit 98efd5ad86d57202163565ea60074d836edc8aa1
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Mon Jun 3 17:17:33 2013 +0900

    fix edje parts of type GROUP on size min calc to calc the child groups too
---
 ChangeLog                |  5 +++++
 NEWS                     |  1 +
 src/lib/edje/edje_calc.c | 17 +++++++++++++++--
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 71570ff..09ba1a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-06-03  Carsten Haitzler (The Rasterman)
+
+        * Fix edje min size calc to propagate min size calcs to GROUP
+        items swallowed in automatically.
+
 2013-05-31  ChunEon Park (Hermet)
         * Edje: support edc proxy.source_visible, proxy.source_clip
 
diff --git a/NEWS b/NEWS
index 16bcda4..a5a61b0 100644
--- a/NEWS
+++ b/NEWS
@@ -288,3 +288,4 @@ Fixes:
     * Fix srv->start_time (initialization missing). So now
       ecore_con_server_uptime_get() is working for plain TCP connections.
     * Fix textblock to render pre again if it needs to relayouting.
+    * Fix edje min size calc to calc sub GROUP parts too.
diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index f672313..a857fa2 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -9,6 +9,7 @@ static void _edje_part_recalc_single(Edje *ed, Edje_Real_Part 
*ep,
                                      Edje_Real_Part *rel1_to_x, Edje_Real_Part 
*rel1_to_y,
                                      Edje_Real_Part *rel2_to_x, Edje_Real_Part 
*rel2_to_y,
                                      Edje_Real_Part *confine_to, 
Edje_Calc_Params *params,
+                                     Evas_Coord mmw, Evas_Coord mmh,
                                      FLOAT_T pos);
 
 #define EINA_COW_CALC_PHYSICS_BEGIN(Calc, Write)       \
@@ -2178,6 +2179,7 @@ _edje_part_recalc_single(Edje *ed,
                          Edje_Real_Part *rel2_to_y,
                          Edje_Real_Part *confine_to,
                          Edje_Calc_Params *params,
+                         Evas_Coord mmw, Evas_Coord mmh,
                          FLOAT_T pos)
 {
    Edje_Color_Class *cc = NULL;
@@ -2188,6 +2190,8 @@ _edje_part_recalc_single(Edje *ed,
    sc = ed->scale;
    if (sc == ZERO) sc = _edje_scale;
    _edje_part_recalc_single_min_max(sc, ed, ep, desc, &minw, &minh, &maxw, 
&maxh);
+   if (minw < mmw) minw = mmw;
+   if (minh < mmh) minh = mmh;
 
    /* relative coords of top left & bottom right */
    _edje_part_recalc_single_rel(ed, ep, desc, rel1_to_x, rel1_to_y, rel2_to_x, 
rel2_to_y, params);
@@ -2761,6 +2765,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int 
flags, Edje_Calc_Params *sta
    Edje_Real_Part *confine_to = NULL;
    FLOAT_T pos = ZERO, pos2;
    Edje_Calc_Params lp3;
+   Evas_Coord mmw = 0, mmh = 0;
 
    /* GRADIENT ARE GONE, WE MUST IGNORE IT FROM OLD FILE. */
    if (ep->part->type == EDJE_PART_TYPE_GRADIENT)
@@ -2827,6 +2832,14 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int 
flags, Edje_Calc_Params *sta
              _edje_recalc_do(ted);
           }
      }
+   if (ep->part->type == EDJE_PART_TYPE_GROUP &&
+       ((ep->type == EDJE_RP_TYPE_SWALLOW) &&
+           (ep->typedata.swallow)) &&
+       ep->typedata.swallow->swallowed_object)
+     {
+        edje_object_size_min_calc(ep->typedata.swallow->swallowed_object,
+                                  &mmw, &mmh);
+     }
 
 #ifdef EDJE_CALC_CACHE
    if (ep->state == ed->state && !state)
@@ -3021,7 +3034,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int 
flags, Edje_Calc_Params *sta
              _edje_part_recalc_single(ed, ep, ep->param1.description, 
chosen_desc, center[0], light[0], persp[0],
                                       rp1[Rel1X], rp1[Rel1Y], rp1[Rel2X], 
rp1[Rel2Y],
                                       confine_to,
-                                      p1, pos);
+                                      p1, mmw, mmh, pos);
 #ifdef EDJE_CALC_CACHE
              if (flags == FLAG_XY)
                ep->param1.state = ed->state;
@@ -3090,7 +3103,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int 
flags, Edje_Calc_Params *sta
                                       rp2[Rel2X],
                                       rp2[Rel2Y],
                                       confine_to,
-                                      p2, pos);
+                                      p2, mmw, mmh, pos);
 #ifdef EDJE_CALC_CACHE
              if (flags == FLAG_XY)
                ep->param2->state = ed->state;

-- 

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2

Reply via email to