diff --git a/legacy/edje/AUTHORS b/legacy/edje/AUTHORS index 28d737aa7e..5dc5a9f6e5 100644 --- a/legacy/edje/AUTHORS +++ b/legacy/edje/AUTHORS @@ -26,3 +26,4 @@ Jérôme Pinot Rajeev Ranjan (Rajeev) ChunEon Park (Hermet) Kim Shinwoo +Michael Bouchaud (yoz) diff --git a/legacy/edje/ChangeLog b/legacy/edje/ChangeLog index 340fb593ba..3e1d73e433 100644 --- a/legacy/edje/ChangeLog +++ b/legacy/edje/ChangeLog @@ -496,3 +496,8 @@ embryo_cc. this still like before requires embryo and edje to share the same install prefix for edje_cc to work. +2012-06-12 Michael Bouchaud (yoz) + + * The aliases are now inherited from the targeted group + * Aliases can be usable with edje programs, if the part is in the + group diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c index a4edcbb57a..cd0f564b24 100644 --- a/legacy/edje/src/bin/edje_cc_handlers.c +++ b/legacy/edje/src/bin/edje_cc_handlers.c @@ -2291,21 +2291,46 @@ st_collections_group_inherit(void) if (pc2->data) { - char *key; + char *key, *data; memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); eina_hash_foreach(pc2->data, _edje_data_item_list_foreach, &fdata); - if (!pc->data) - pc->data = eina_hash_string_small_new(free); - - + if (!pc->data) pc->data = eina_hash_string_small_new(free); EINA_LIST_FREE(fdata.list, key) { - es = mem_alloc(SZ(Edje_String)); - es = (Edje_String *)eina_hash_find(pc2->data, key); - eina_hash_direct_add(pc->data, key, es); + data = eina_hash_find(pc2->data, key); + eina_hash_direct_add(pc->data, key, data); + } + } + + if (pc2->alias) + { + char *key, *alias; + + memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); + eina_hash_foreach(pc2->alias, + _edje_data_item_list_foreach, &fdata); + if (!pc->alias) pc->alias = eina_hash_string_small_new(free); + EINA_LIST_FREE(fdata.list, key) + { + alias = eina_hash_find(pc2->alias, key); + eina_hash_direct_add(pc->alias, key, alias); + } + } + if (pc2->aliased) + { + char *key, *aliased; + + memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); + eina_hash_foreach(pc2->aliased, + _edje_data_item_list_foreach, &fdata); + if (!pc->aliased) pc->aliased = eina_hash_string_small_new(free); + EINA_LIST_FREE(fdata.list, key) + { + aliased = eina_hash_find(pc2->aliased, key); + eina_hash_direct_add(pc->aliased, key, aliased); } } diff --git a/legacy/edje/src/bin/edje_cc_out.c b/legacy/edje/src/bin/edje_cc_out.c index fa29725dd9..f9533b5952 100644 --- a/legacy/edje/src/bin/edje_cc_out.c +++ b/legacy/edje/src/bin/edje_cc_out.c @@ -2144,11 +2144,15 @@ data_process_lookups(void) } else { + char *aliased; + aliased = eina_hash_find(part->pc->aliased, part->name); + if (!aliased) + aliased = part->name; for (i = 0; i < part->pc->parts_count; ++i) { ep = part->pc->parts[i]; - if ((ep->name) && (!strcmp(ep->name, part->name))) + if ((ep->name) && (!strcmp(ep->name, aliased))) { handle_slave_lookup(part_slave_lookups, part->dest, ep->id); *(part->dest) = ep->id;