cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d1a5df70558a792791d04091ff14feef60ea3bae

commit d1a5df70558a792791d04091ff14feef60ea3bae
Author: SangHyeon Lee <[email protected]>
Date:   Mon Jun 12 10:13:02 2017 -0700

    elementary: fix recursive content group calculation in genlist
    
    Summary:
    There are several problem is left on recursize content calc.
    previously genlist only calculate size of layout class,
    but after recursive content group calculation patch,
    layout couldn't get proper size because sizing eval is
    not pre-processed.
    
    Test Plan: elementary test working fine.
    
    Reviewers: jpeg, cedric, raster, conr2d
    
    Differential Revision: https://phab.enlightenment.org/D4952
    
    Signed-off-by: Cedric Bail <[email protected]>
---
 src/lib/elementary/elm_genlist.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 63e96e52aa..3cca3b2d4c 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -375,6 +375,10 @@ _widget_calculate_recursive(Eo *obj)
    pd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
    if (!pd) return;
 
+   if (!efl_canvas_group_need_recalculate_get(obj) &&
+       !efl_canvas_group_need_recalculate_get(pd->resize_obj))
+     return;
+
    EINA_LIST_FOREACH(pd->subobjs, l, child)
      _widget_calculate_recursive(child);
 
@@ -433,8 +437,12 @@ _item_content_realize(Elm_Gen_Item *it,
              if (efl_isa(content, ELM_WIDGET_CLASS))
                {
                   ELM_WIDGET_DATA_GET_OR_RETURN(content, wd);
-                  if (efl_canvas_group_need_recalculate_get(wd->resize_obj))
-                    _widget_calculate_recursive(content);
+
+                  // FIXME : Layout need sizing eval before group calculate
+                  if (efl_class_get(content) == ELM_LAYOUT_CLASS)
+                    elm_obj_layout_sizing_eval(content);
+
+                  _widget_calculate_recursive(content);
                }
 
              if (!edje_object_part_swallow(target, key, content))

-- 


Reply via email to