diff options
author | Mike Blumenkrantz <zmike@samsung.com> | 2014-03-24 15:06:19 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2014-03-24 15:06:19 -0400 |
commit | ee7755e21bbb040ba8ca24ed2ee7b98d3328b25a (patch) | |
tree | 5210ac4a8f6deec795d12ad22bd609b8af54ca32 | |
parent | cea92fa2fc3654cd8092280e7acf3727b3feb8bb (diff) | |
download | efl-ee7755e21bbb040ba8ca24ed2ee7b98d3328b25a.tar.gz |
edje_cc now correctly handles group inheriting when the inherit is after a part/program
this is technically @fix, but it's also new-ish behavior so I'm not going to backport it; 1.10 can be the edje_cc release
-rw-r--r-- | src/bin/edje/edje_cc_handlers.c | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 8ccaf9c2f1..cd1080b188 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -1128,25 +1128,27 @@ _edje_program_copy(Edje_Program *ep, Edje_Program *ep2) memcpy(copy, name, strlen(name) + 1); - if (ep2->action == EDJE_ACTION_TYPE_STATE_SET) - data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); - else if (ep2->action == EDJE_ACTION_TYPE_ACTION_STOP) - data_queue_copied_program_lookup(pc, &(et2->id), &(et->id)); - else if (ep2->action == EDJE_ACTION_TYPE_SCRIPT) - data_queue_copied_program_lookup(pc, &(et2->id), &(et->id)); - else if (ep2->action == EDJE_ACTION_TYPE_DRAG_VAL_SET) - data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); - else if (ep2->action == EDJE_ACTION_TYPE_DRAG_VAL_STEP) - data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); - else if (ep2->action == EDJE_ACTION_TYPE_DRAG_VAL_PAGE) - data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); - else if (ep2->action == EDJE_ACTION_TYPE_FOCUS_SET) - - data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); - else if (ep2->action == EDJE_ACTION_TYPE_FOCUS_OBJECT) - data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); - else + switch (ep2->action) { + case EDJE_ACTION_TYPE_STATE_SET: + case EDJE_ACTION_TYPE_DRAG_VAL_SET: + case EDJE_ACTION_TYPE_DRAG_VAL_STEP: + case EDJE_ACTION_TYPE_DRAG_VAL_PAGE: + case EDJE_ACTION_TYPE_FOCUS_SET: + case EDJE_ACTION_TYPE_FOCUS_OBJECT: + if (current_group_inherit) + data_queue_part_lookup(pc, name, &et->id); + else + data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); + break; + case EDJE_ACTION_TYPE_ACTION_STOP: + case EDJE_ACTION_TYPE_SCRIPT: + if (current_group_inherit) + data_queue_program_lookup(pc, name, &et->id); + else + data_queue_copied_program_lookup(pc, &(et2->id), &(et->id)); + break; + default: ERR("parse error %s:%i. target may only be used after action", file_in, line - 1); exit(-1); @@ -2757,7 +2759,7 @@ st_collections_group_inherit(void) Edje_List_Foreach_Data fdata; Eina_List *l; char *parent_name; - unsigned int i, j; + unsigned int i, j, offset; check_arg_count(1); @@ -2851,11 +2853,12 @@ st_collections_group_inherit(void) // FIXME: Handle limits dup + offset = pc->parts_count; for (i = 0 ; i < pc2->parts_count ; i++) { // copy the part edje_cc_handlers_part_make(-1); - ep = pc->parts[i]; + ep = pc->parts[i + offset]; ep2 = pc2->parts[i]; _part_copy(ep, ep2); } |