From ceb13556b172e7bc4719f7ecee87566063e3108b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 26 May 2014 12:25:07 -0400 Subject: [PATCH] Revert "Revert "recursively hide edje group objects on edje hide"" This reverts commit b8ca758658cc71bdfecd45bc2a5b8d31ca5e17fc. --- src/lib/edje/edje_calc.c | 2 +- src/lib/edje/edje_load.c | 6 ++++-- src/lib/edje/edje_smart.c | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c index 1bf7816f76..85ebf67e3b 100644 --- a/src/lib/edje/edje_calc.c +++ b/src/lib/edje/edje_calc.c @@ -3915,7 +3915,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta eo_do(ep->typedata.swallow->swallowed_object, evas_obj_position_set(ed->x + pf->final.x, ed->y + pf->final.y), evas_obj_size_set(pf->final.w, pf->final.h), - evas_obj_visibility_set(EINA_TRUE)); + evas_obj_visibility_set(evas_object_visible_get(ed->obj))); } else evas_object_hide(ep->typedata.swallow->swallowed_object); mo = ep->typedata.swallow->swallowed_object; diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c index 51a21a9b68..a39a91ad9f 100644 --- a/src/lib/edje/edje_load.c +++ b/src/lib/edje/edje_load.c @@ -899,7 +899,9 @@ _edje_object_file_set_internal(Evas_Object *obj, const Eina_File *file, const ch obj); if (rp->part->type == EDJE_PART_TYPE_GROUP) { - ed->groups = eina_list_append(ed->groups, _edje_fetch(child_obj)); + Edje *edg = _edje_fetch(child_obj); + ed->groups = eina_list_append(ed->groups, edg); + evas_object_data_set(child_obj, "\377 edje.part_obj", rp); _edje_real_part_swallow(ed, rp, child_obj, EINA_TRUE); _edje_subobj_register(ed, child_obj); source = NULL; @@ -1965,4 +1967,4 @@ _cb_signal_repeat(void *data, Evas_Object *obj, const char *sig, const char *sou if (ed_parent) _edje_util_message_send(ed_parent, EDJE_QUEUE_SCRIPT, EDJE_MESSAGE_SIGNAL, 0, &emsg); -} \ No newline at end of file +} diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c index a4de77fc0c..626fdd15bd 100644 --- a/src/lib/edje/edje_smart.c +++ b/src/lib/edje/edje_smart.c @@ -272,6 +272,9 @@ _edje_evas_smart_resize(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord w, Evas_Coord EOLIAN static void _edje_evas_smart_show(Eo *obj, Edje *ed) { + Eina_List *l; + Edje *edg; + eo_do_super(obj, MY_CLASS, evas_obj_smart_show()); if (evas_object_visible_get(obj)) return; if (_edje_script_only(ed)) @@ -284,12 +287,27 @@ _edje_evas_smart_show(Eo *obj, Edje *ed) _edje_lua_script_only_show(ed); return; } + if (eina_list_count(ed->groups) > 1) + { + EINA_LIST_FOREACH(ed->groups, l, edg) + { + Edje_Real_Part *rp; + + if (edg == ed) continue; + rp = evas_object_data_get(edg->obj, "\377 edje.part_obj"); + if (rp->chosen_description->visible) + evas_object_show(edg->obj); + } + } _edje_emit(ed, "show", NULL); } EOLIAN static void _edje_evas_smart_hide(Eo *obj, Edje *ed) { + Eina_List *l; + Edje *edg; + eo_do_super(obj, MY_CLASS, evas_obj_smart_hide()); if (!evas_object_visible_get(obj)) return; if (_edje_script_only(ed)) @@ -302,6 +320,8 @@ _edje_evas_smart_hide(Eo *obj, Edje *ed) _edje_lua_script_only_hide(ed); return; } + EINA_LIST_FOREACH(ed->groups, l, edg) + if (edg != ed) evas_object_hide(edg->obj); _edje_emit(ed, "hide", NULL); }