summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2014-03-24 15:06:19 -0400
committerMike Blumenkrantz <zmike@samsung.com>2014-03-24 15:06:19 -0400
commitee7755e21bbb040ba8ca24ed2ee7b98d3328b25a (patch)
tree5210ac4a8f6deec795d12ad22bd609b8af54ca32
parentcea92fa2fc3654cd8092280e7acf3727b3feb8bb (diff)
downloadefl-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.c43
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);
}