From 932e165197bccfc1dedce2dda9eda28d3f406d01 Mon Sep 17 00:00:00 2001 From: Jeeyong Um Date: Fri, 21 Apr 2017 11:39:00 +0900 Subject: [PATCH] edje_cc: Keep script block during group inheritance Currently, script block is removed when an edje group inherits from other group after defining its own script block. group { "somegroup"; script { ... } parts { ... } inherit: "othergroup"; // <= previous script block is removed here. } If parent group doesn't have script block, it doesn't need to overwrite previous one. This will keep script block and print warning when script block is overwritten. Signed-Off-By: Jeeyong Um Change-Id: Ie49c4e5c1378658d16bf33e61586f8d5a3a7cd14 --- src/bin/edje/edje_cc_handlers.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 6f26cd4..04cc563 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -4398,9 +4398,22 @@ st_collections_group_inherit(void) cd = eina_list_data_get(eina_list_last(codes)); cd->is_lua = cd2->is_lua; - cd->shared = STRDUP(cd2->shared); - cd->original = STRDUP(cd2->original); - script_override = EINA_TRUE; + if (cd2->shared) + { + if (cd->shared) + { + WRN("%s:%i. script block in group \"%s\" will be overwritten by inheriting " + "from group \"%s\".", file_in, line - 1, pc->part, pc2->part); + free(cd->shared); + } + if (cd->original) + free(cd->original); + + cd->shared = STRDUP(cd2->shared); + cd->original = STRDUP(cd2->original); + + script_override = EINA_TRUE; + } EINA_LIST_FOREACH(cd2->programs, l, cp2) { @@ -4730,8 +4743,10 @@ st_collections_group_program_source(void) static void ob_collections_group_script(void) { + Edje_Part_Collection *pc; Code *cd; + pc = eina_list_last_data_get(edje_collections); cd = eina_list_data_get(eina_list_last(codes)); if (!is_verbatim()) track_verbatim(1); @@ -4751,6 +4766,9 @@ ob_collections_group_script(void) free(cd->shared); free(cd->original); script_override = EINA_FALSE; + + WRN("%s:%i. Inherited script block in group \"%s\" is redefined. " + "This can break inherited edje programs.", file_in, line - 1, pc->part); } else { -- 2.7.4