forked from enlightenment/efl
edje_cc now (more) correctly handles text filter inheriting/resetting
This commit is contained in:
parent
e6f0deca27
commit
b35dfc5f05
|
@ -174,6 +174,7 @@ void data_queue_part_nest_lookup(Edje_Part_Collection *pc, const char *name,
|
|||
void data_queue_copied_part_nest_lookup(Edje_Part_Collection *pc, int *src, int *dest, char **dest2);
|
||||
void data_queue_part_reallocated_lookup(Edje_Part_Collection *pc, const char *name,
|
||||
unsigned char **base, int offset);
|
||||
void part_lookup_delete(Edje_Part_Collection *pc, const char *name, int *dest, char **dest2);
|
||||
void data_queue_copied_part_lookup(Edje_Part_Collection *pc, int *src, int *dest);
|
||||
void *data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest);
|
||||
void program_lookup_rename(void *p, const char *name);
|
||||
|
|
|
@ -6272,6 +6272,14 @@ st_collections_group_parts_part_description_inherit(void)
|
|||
ted->text.text_class = STRDUP(ted->text.text_class);
|
||||
ted->text.font.str = STRDUP(ted->text.font.str);
|
||||
ted->text.filter.str = STRDUP(ted->text.filter.str);
|
||||
{
|
||||
Eina_List *l;
|
||||
Eina_Stringshare *name;
|
||||
static int part_key = 0;
|
||||
|
||||
EINA_LIST_FOREACH(ted->text.filter_sources, l, name)
|
||||
data_queue_part_lookup(pc, name, &part_key);
|
||||
}
|
||||
|
||||
data_queue_copied_part_nest_lookup(pc, &(tparent->text.id_source), &(ted->text.id_source), &ted->text.id_source_part);
|
||||
data_queue_copied_part_nest_lookup(pc, &(tparent->text.id_text_source), &(ted->text.id_text_source), &ted->text.id_text_source_part);
|
||||
|
@ -8428,13 +8436,21 @@ st_collections_group_parts_part_description_text_filter(void)
|
|||
}
|
||||
|
||||
ed = (Edje_Part_Description_Text*) current_desc;
|
||||
pc = eina_list_data_get(eina_list_last(edje_collections));
|
||||
if (ed->text.filter.str)
|
||||
{
|
||||
EINA_LIST_FREE(ed->text.filter_sources, name)
|
||||
{
|
||||
part_lookup_delete(pc, name, &part_key, NULL);
|
||||
eina_stringshare_del(name);
|
||||
}
|
||||
free((void*)ed->text.filter.str);
|
||||
}
|
||||
ed->text.filter_sources = NULL;
|
||||
|
||||
ed->text.filter.str = parse_str(0);
|
||||
if (!ed->text.filter.str) return;
|
||||
|
||||
pc = eina_list_data_get(eina_list_last(edje_collections));
|
||||
|
||||
// Parse list of buffers that have a source
|
||||
// note: does not support comments
|
||||
code = strdup(ed->text.filter.str);
|
||||
|
|
|
@ -2258,6 +2258,29 @@ data_queue_part_reallocated_lookup(Edje_Part_Collection *pc, const char *name,
|
|||
eina_hash_set(part_dest_lookup, &pl->key, list);
|
||||
}
|
||||
|
||||
void
|
||||
part_lookup_delete(Edje_Part_Collection *pc, const char *name, int *dest, char **dest2)
|
||||
{
|
||||
Part_Lookup_Key key;
|
||||
Part_Lookup *pl = NULL;
|
||||
Eina_List *list, *l, *ll;
|
||||
key.pc = pc;
|
||||
key.mem.dest = dest;
|
||||
key.stable = EINA_TRUE;
|
||||
|
||||
pl = eina_hash_find(part_pc_dest_lookup, &key);
|
||||
if (!pl) return;
|
||||
list = eina_hash_find(part_dest_lookup, &pl->key);
|
||||
EINA_LIST_FOREACH_SAFE(list, l, ll, pl)
|
||||
{
|
||||
if (strcmp(pl->name, name) || (pl->key.dest2 != dest2)) continue;
|
||||
free(pl->name);
|
||||
list = eina_list_remove_list(list, l);
|
||||
free(pl);
|
||||
}
|
||||
eina_hash_set(part_dest_lookup, &pl->key, list);
|
||||
}
|
||||
|
||||
void
|
||||
data_queue_copied_part_lookup(Edje_Part_Collection *pc, int *src, int *dest)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue