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);
+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);
void data_queue_image_lookup(char *name, int *dest, Eina_Bool *set);
Eina_Bool script_override = EINA_FALSE;
static Edje_Program *sequencing = NULL;
static Eina_List *sequencing_lookups = NULL;
+static int *anonymous_delete = NULL;
Eina_List *po_files;
_edje_program_remove(pc, pr);
+ if (pr->action == EDJE_ACTION_TYPE_SCRIPT)
+ {
+ anonymous_delete = &pr->id;
+ }
+
_program_free(pr);
return EINA_TRUE;
}
success |= _program_remove(name, pc->programs.nocmp, pc->programs.nocmp_count);
copied_program_lookup_delete(pc, name);
+ if (anonymous_delete)
+ {
+ copied_program_anonymous_lookup_delete(pc, anonymous_delete);
+ anonymous_delete = NULL;
+ }
if (!success)
{
ERR("Attempted removal of nonexistent program '%s' in group '%s'.",
}
void
+copied_program_anonymous_lookup_delete(Edje_Part_Collection *pc, int *dest)
+{
+ Program_Lookup *pl;
+ Eina_List *l, *ll;
+
+ EINA_LIST_FOREACH_SAFE(program_lookups, l, ll, pl)
+ {
+ if ((!pl->anonymous) || (pl->pc != pc) || (dest != &pl->u.ep->id)) continue;
+ program_lookups = eina_list_remove_list(program_lookups, l);
+ free(pl);
+ }
+}
+
+void
data_queue_copied_anonymous_lookup(Edje_Part_Collection *pc, int *src, int *dest)
{
Eina_List *l;