edje_cc: add lookup for inherited after program

Summary:
"after" program inherited from inherit_only group does not have original
program lookup, but _edje_program_copy() doesn't consider this case.
When it fails to copy program lookup, new program lookup should be appeded.

@fix

Test Plan: make attached program and run

Reviewers: cedric, jpeg, Hermet

Reviewed By: Hermet

Subscribers: taxi2se

Differential Revision: https://phab.enlightenment.org/D4253
This commit is contained in:
Jee-Yong Um 2016-09-01 20:08:55 +09:00 committed by Hermet Park
parent 1d281906f2
commit 1d2be3fc4c
3 changed files with 9 additions and 4 deletions

View File

@ -180,7 +180,7 @@ void data_queue_copied_part_lookup(Edje_Part_Collection *pc, int *src, int *d
void *data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest);
void program_lookup_rename(void *p, const char *name);
void copied_program_lookup_delete(Edje_Part_Collection *pc, const char *name);
void data_queue_copied_program_lookup(Edje_Part_Collection *pc, int *src, int *dest);
Eina_Bool data_queue_copied_program_lookup(Edje_Part_Collection *pc, int *src, int *dest);
void copied_program_anonymous_lookup_delete(Edje_Part_Collection *pc, int *dest);
void data_queue_anonymous_lookup(Edje_Part_Collection *pc, Edje_Program *ep, int *dest);
void data_queue_copied_anonymous_lookup(Edje_Part_Collection *pc, int *src, int *dest);

View File

@ -2093,7 +2093,8 @@ _edje_program_copy(Edje_Program *ep, Edje_Program *ep2)
ep->after = eina_list_append(ep->after, pa);
copy = (char*) (pa + 1);
memcpy(copy, name, strlen(name) + 1);
data_queue_copied_program_lookup(pc, &(pa2->id), &(pa->id));
if (!data_queue_copied_program_lookup(pc, &(pa2->id), &(pa->id)))
data_queue_program_lookup(pc, copy, &(pa->id));
}
ep->api.name = STRDUP(ep2->api.name);

View File

@ -3181,7 +3181,7 @@ copied_program_lookup_delete(Edje_Part_Collection *pc, const char *name)
}
}
void
Eina_Bool
data_queue_copied_program_lookup(Edje_Part_Collection *pc, int *src, int *dest)
{
Eina_List *l;
@ -3190,8 +3190,12 @@ data_queue_copied_program_lookup(Edje_Part_Collection *pc, int *src, int *dest)
EINA_LIST_FOREACH(program_lookups, l, pl)
{
if (pl->dest == src)
data_queue_program_lookup(pc, pl->u.name, dest);
{
data_queue_program_lookup(pc, pl->u.name, dest);
return EINA_TRUE;
}
}
return EINA_FALSE;
}
void