minor optimizations to box recalculation.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 28 Feb 2009 20:04:55 +0000 (20:04 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 28 Feb 2009 20:04:55 +0000 (20:04 +0000)
just recalculate when required, and just mark as required when layout
really changes.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@39299 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/edje_calc.c

index 0accfaf..e650990 100644 (file)
@@ -1238,7 +1238,11 @@ _edje_box_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_
    evas_object_box_align_set(ep->object, chosen_desc->box.align.x, chosen_desc->box.align.y);
    evas_object_box_padding_set(ep->object, chosen_desc->box.padding.x, chosen_desc->box.padding.y);
 
-   evas_object_smart_calculate(ep->object);
+   if (evas_object_smart_need_recalculate_get(ep->object))
+     {
+       evas_object_smart_need_recalculate_set(ep->object, 0);
+       evas_object_smart_calculate(ep->object);
+     }
    evas_object_size_hint_min_get(ep->object, &min_w, &min_h);
    if (chosen_desc->box.min.h)
      p3->w = min_w;