{
_edje_program_remove(pc, me);
current_program = pgrms[i];
+ if (pgrms[i]->action == EDJE_ACTION_TYPE_SCRIPT)
+ copied_program_anonymous_lookup_delete(pc, &pgrms[i]->id);
epp->can_override = EINA_FALSE;
return;
}
static void
_program_free(Edje_Program *pr)
{
+ Edje_Part_Collection *pc;
Edje_Program_Target *prt;
Edje_Program_After *pa;
+ pc = eina_list_last_data_get(edje_collections);
+
free((void*)pr->name);
free((void*)pr->signal);
free((void*)pr->source);
free((void*)pr->sample_name);
free((void*)pr->tone_name);
EINA_LIST_FREE(pr->targets, prt)
- free(prt);
+ {
+ part_lookup_del(pc, &prt->id);
+ free(prt);
+ }
EINA_LIST_FREE(pr->after, pa)
free(pa);
free(pr);
{
if ((!pl->anonymous) || (pl->pc != pc) || (dest != &pl->u.ep->id)) continue;
program_lookups = eina_list_remove_list(program_lookups, l);
+
+ Code *cd;
+ Code_Program *cp;
+ Edje_Part_Collection_Directory_Entry *de;
+ Eina_List *l, *ll;
+
+ de = eina_hash_find(edje_file->collection, pl->pc->part);
+ cd = eina_list_nth(codes, de->id);
+
+ EINA_LIST_FOREACH_SAFE(cd->programs, l, ll, cp)
+ {
+ if (pl->dest == &cp->id)
+ {
+ cd->programs = eina_list_remove(cd->programs, cp);
+ free(cp);
+ break;
+ }
+ }
+
free(pl);
}
}