From f7af802f4f94c9f99c511f9a9661523cc5cdac02 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Thu, 21 Jul 2016 11:17:30 -0700 Subject: [PATCH] edje: allow inheritance from an aliased group. --- src/bin/edje/edje_cc_handlers.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 3767a7b8fd..b1cfc7a2de 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -4572,7 +4572,8 @@ st_collections_group_target_group(void) static void st_collections_group_inherit(void) { - Edje_Part_Collection *pc, *pc2; + Edje_Part_Collection_Directory_Entry *alias; + Edje_Part_Collection *pc, *pc2 = NULL; Edje_Part_Collection_Parser *pcp, *pcp2; Edje_Part *ep, *ep2; Edje_List_Foreach_Data fdata; @@ -4586,17 +4587,34 @@ st_collections_group_inherit(void) parent_name = parse_str(0); - EINA_LIST_FOREACH(edje_collections, l, pc2) + EINA_LIST_FOREACH(aliases, l, alias) { - if (!strcmp(parent_name, pc2->part)) - break; + if (alias->group_alias && + !strcmp(alias->entry, parent_name)) + { + free(parent_name); + pc2 = eina_list_nth(edje_collections, alias->id); + parent_name = strdup(pc2->part); + break; + } } + + if (!pc2) + { + EINA_LIST_FOREACH(edje_collections, l, pc2) + { + if (!strcmp(parent_name, pc2->part)) + break; + } + } + if (!pc2) { ERR("parse error %s:%i. There isn't a group with the name %s", file_in, line - 1, parent_name); exit(-1); } + if (pc2 == pc) { ERR("parse error %s:%i. You are trying to inherit '%s' from itself. That's not possible."