cedric pushed a commit to branch master.

commit b13db5ab8d4044a3501a8c186e3f1de19d002c35
Author: Cedric Bail <[email protected]>
Date:   Mon Aug 12 16:47:12 2013 +0900

    edje: forth recalc for text part that got adjusted during a calc_only.
---
 src/lib/edje/edje_calc.c | 43 ++++++++++++++++++++++++++++++++++---------
 1 file changed, 34 insertions(+), 9 deletions(-)

diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index b4ebcae..0967a37 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -2355,24 +2355,49 @@ _edje_part_recalc_single(Edje *ed,
    /* Adjust rounding to not loose one pixels compared to float
       information only when rendering to avoid infinite adjustement
       when doing min restricted calc */
-   if (!ed->calc_only)
+   if (ABS(params->final.x) + params->final.w < 
TO_INT(ADD(ABS(params->eval.x), params->eval.w)))
      {
-        if (ABS(params->final.x) + params->final.w < 
TO_INT(ADD(ABS(params->eval.x), params->eval.w)))
-         {
+        if (!ed->calc_only)
+          {
              params->final.w += 1;
-         }
-        else if (ABS(params->final.x) + params->final.w > 
TO_INT(ADD(ABS(params->eval.x), params->eval.w)))
-         {
+          }
+        else
+          {
+             ep->invalidate = EINA_TRUE;
+          }
+     }
+   else if (ABS(params->final.x) + params->final.w > 
TO_INT(ADD(ABS(params->eval.x), params->eval.w)))
+     {
+        if (!ed->calc_only)
+          {
              params->final.w -= 1;
-         }
-        if (ABS(params->final.y) + params->final.h < 
TO_INT(ADD(ABS(params->eval.y), params->eval.h)))
+          }
+        else
+          {
+             ep->invalidate = EINA_TRUE;
+          }
+     }
+   if (ABS(params->final.y) + params->final.h < 
TO_INT(ADD(ABS(params->eval.y), params->eval.h)))
+     {
+        if (!ed->calc_only)
           {
              params->final.h += 1;
           }
-        else if (ABS(params->final.y) + params->final.h > 
TO_INT(ADD(ABS(params->eval.y), params->eval.h)))
+        else
+          {
+             ep->invalidate = EINA_TRUE;
+          }
+     }
+   else if (ABS(params->final.y) + params->final.h > 
TO_INT(ADD(ABS(params->eval.y), params->eval.h)))
+     {
+        if (!ed->calc_only)
           {
              params->final.h -= 1;
           }
+        else
+          {
+             ep->invalidate = EINA_TRUE;
+          }
      }
 
    /* fill */

-- 

------------------------------------------------------------------------------
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://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk

Reply via email to