diff --git a/legacy/edje/src/bin/edje_cc.h b/legacy/edje/src/bin/edje_cc.h index 0cf4c60a48..b6bcd5ea35 100644 --- a/legacy/edje/src/bin/edje_cc.h +++ b/legacy/edje/src/bin/edje_cc.h @@ -128,6 +128,7 @@ extern Evas_List *edje_collections; extern Evas_List *fonts; extern Evas_List *codes; extern Evas_List *defines; +extern Evas_List *aliases; extern New_Object_Handler object_handlers[]; extern New_Statement_Handler statement_handlers[]; diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c index 2af9757977..a05fdcf4e4 100644 --- a/legacy/edje/src/bin/edje_cc_handlers.c +++ b/legacy/edje/src/bin/edje_cc_handlers.c @@ -30,6 +30,7 @@ static void ob_collections(void); static void ob_collections_group(void); static void st_collections_group_name(void); +static void st_collections_group_alias(void); static void st_collections_group_min(void); static void st_collections_group_max(void); static void st_collections_group_data_item(void); @@ -144,6 +145,7 @@ New_Statement_Handler statement_handlers[] = {"collections.color_classes.color_class.color2", st_color_class_color2}, /* dup */ {"collections.color_classes.color_class.color3", st_color_class_color3}, /* dup */ {"collections.group.name", st_collections_group_name}, + {"collections.group.alias", st_collections_group_alias}, {"collections.group.min", st_collections_group_min}, {"collections.group.max", st_collections_group_max}, {"collections.group.data.item", st_collections_group_data_item}, @@ -793,6 +795,21 @@ st_collections_group_name(void) de->entry = parse_str(0); } +static void +st_collections_group_alias(void) +{ + Edje_Part_Collection_Directory_Entry *de, *alias; + + check_arg_count(1); + de = evas_list_data(evas_list_last(edje_file->collection_dir->entries)); + + alias = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); + alias->id = de->id; + alias->entry = parse_str(0); + + aliases = evas_list_append(aliases, alias); +} + static void st_collections_group_min(void) { diff --git a/legacy/edje/src/bin/edje_cc_out.c b/legacy/edje/src/bin/edje_cc_out.c index 2eee0a0aab..2fd042ac38 100644 --- a/legacy/edje/src/bin/edje_cc_out.c +++ b/legacy/edje/src/bin/edje_cc_out.c @@ -52,6 +52,7 @@ Evas_List *edje_collections = NULL; Evas_List *fonts = NULL; Evas_List *codes = NULL; Evas_List *code_lookups = NULL; +Evas_List *aliases = NULL; static Eet_Data_Descriptor *edd_edje_file = NULL; static Eet_Data_Descriptor *edd_edje_image_directory = NULL; @@ -221,6 +222,16 @@ data_write(void) } if (edje_file) { + + if (edje_file->collection_dir) + { + /* copy aliases into collection directory */ + while (aliases) + { + edje_file->collection_dir->entries = evas_list_append(edje_file->collection_dir->entries, aliases->data); + aliases = evas_list_remove_list(aliases, aliases); + } + } bytes = eet_data_write(ef, edd_edje_file, "edje_file", edje_file, 1); if (bytes <= 0) {