summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-01-13 15:43:49 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-01-13 15:47:50 -0500
commite63c83205558ba60fb6743d19c1b4460d52074b5 (patch)
tree7b1ac6a743af8be9f06dc771b43f8e3acd4bdd02
parent6386b8e7ca55ec9d629ca003309be33c91103673 (diff)
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
-rw-r--r--src/lib/elm_box.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/elm_box.c b/src/lib/elm_box.c
index 61e56054c..1231f29d5 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)
552 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); 552 ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
553 553
554 ELM_BOX_CHECK(obj); 554 ELM_BOX_CHECK(obj);
555 ELM_BOX_DATA_GET(obj, sd);
556 /* set this to block _sizing_eval() calls */
557 sd->delete_me = EINA_TRUE;
555 bd = evas_object_smart_data_get(wd->resize_obj); 558 bd = evas_object_smart_data_get(wd->resize_obj);
556 EINA_LIST_FOREACH (bd->children, l, opt) 559 EINA_LIST_FOREACH (bd->children, l, opt)
557 elm_widget_sub_object_del(obj, opt->obj); 560 elm_widget_sub_object_del(obj, opt->obj);
561 sd->delete_me = EINA_FALSE;
558 562
559 /* EINA_FALSE means to delete objects as well */ 563 /* EINA_FALSE means do not delete objects */
560 evas_object_box_remove_all(wd->resize_obj, EINA_FALSE); 564 evas_object_box_remove_all(wd->resize_obj, EINA_FALSE);
565 /* update size hints */
566 _sizing_eval(obj);
561} 567}
562 568
563EOLIAN static void 569EOLIAN static void