discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=e63c83205558ba60fb6743d19c1b4460d52074b5

commit e63c83205558ba60fb6743d19c1b4460d52074b5
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Wed Jan 13 15:43:49 2016 -0500

    box: enforce size recalc during unpack_all()
    
    deleting subobjects here was occurring and triggering sizing eval
    prior to removing the objects from the evas box, resulting in a failure
    to accurately calculate and set size hints
    
    also set delete_me to block sizing evals during subobj deletion loop
    in order to avoid object thrashing during the time when nothing is happening
    
    @fix
---
 src/lib/elm_box.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_box.c b/src/lib/elm_box.c
index 61e5605..1231f29 100644
--- a/src/lib/elm_box.c
+++ b/src/lib/elm_box.c
@@ -552,12 +552,18 @@ _elm_box_unpack_all(Eo *obj, Elm_Box_Data *_pd 
EINA_UNUSED)
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    ELM_BOX_CHECK(obj);
+   ELM_BOX_DATA_GET(obj, sd);
+   /* set this to block _sizing_eval() calls */
+   sd->delete_me = EINA_TRUE;
    bd = evas_object_smart_data_get(wd->resize_obj);
    EINA_LIST_FOREACH (bd->children, l, opt)
      elm_widget_sub_object_del(obj, opt->obj);
+   sd->delete_me = EINA_FALSE;
 
-   /* EINA_FALSE means to delete objects as well */
+   /* EINA_FALSE means do not delete objects */
    evas_object_box_remove_all(wd->resize_obj, EINA_FALSE);
+   /* update size hints */
+   _sizing_eval(obj);
 }
 
 EOLIAN static void

-- 


Reply via email to