edje_load.c | edje_load.c | |||
---|---|---|---|---|
skipping to change at line 128 | skipping to change at line 128 | |||
EAPI Eina_Bool | EAPI Eina_Bool | |||
edje_file_group_exists(const char *file, const char *glob) | edje_file_group_exists(const char *file, const char *glob) | |||
{ | { | |||
Edje_File *edf; | Edje_File *edf; | |||
int error_ret = 0; | int error_ret = 0; | |||
Eina_Bool succeed = EINA_FALSE; | Eina_Bool succeed = EINA_FALSE; | |||
Eina_Bool is_glob = EINA_FALSE; | Eina_Bool is_glob = EINA_FALSE; | |||
const char *p; | const char *p; | |||
if ((!file) || (!*file)) | if ((!file) || (!*file) || (!glob)) | |||
return EINA_FALSE; | return EINA_FALSE; | |||
edf = _edje_cache_file_coll_open(file, NULL, &error_ret, NULL); | edf = _edje_cache_file_coll_open(file, NULL, &error_ret, NULL); | |||
if (!edf) | if (!edf) | |||
return EINA_FALSE; | return EINA_FALSE; | |||
for (p = glob; *p; p++) | for (p = glob; *p; p++) | |||
{ | { | |||
if ((*p == '*') || (*p == '?') || (*p == '[')) | if ((*p == '*') || (*p == '?') || (*p == '[')) | |||
{ | { | |||
skipping to change at line 227 | skipping to change at line 227 | |||
void | void | |||
_edje_programs_patterns_init(Edje *ed) | _edje_programs_patterns_init(Edje *ed) | |||
{ | { | |||
Edje_Signals_Sources_Patterns *ssp = &ed->patterns.programs; | Edje_Signals_Sources_Patterns *ssp = &ed->patterns.programs; | |||
Edje_Program **all; | Edje_Program **all; | |||
unsigned int i, j; | unsigned int i, j; | |||
if (ssp->signals_patterns) | if (ssp->signals_patterns) | |||
return; | return; | |||
if (getenv("EDJE_DUMP_PROGRAMS")) | ||||
{ | ||||
INF("Group '%s' programs:", ed->group); | ||||
#define EDJE_DUMP_PROGRAM(Section) \ | ||||
for (i = 0; i < ed->collection->programs.Section##_count; i++) \ | ||||
INF(#Section" for ('%s', '%s')", ed->collection->programs.Section[i | ||||
]->signal, ed->collection->programs.Section[i]->source); | ||||
EDJE_DUMP_PROGRAM(strcmp); | ||||
EDJE_DUMP_PROGRAM(strncmp); | ||||
EDJE_DUMP_PROGRAM(strrncmp); | ||||
EDJE_DUMP_PROGRAM(fnmatch); | ||||
EDJE_DUMP_PROGRAM(nocmp); | ||||
} | ||||
edje_match_program_hash_build(ed->collection->programs.strcmp, | edje_match_program_hash_build(ed->collection->programs.strcmp, | |||
ed->collection->programs.strcmp_count, | ed->collection->programs.strcmp_count, | |||
&ssp->exact_match); | &ssp->exact_match); | |||
j = ed->collection->programs.strncmp_count | j = ed->collection->programs.strncmp_count | |||
+ ed->collection->programs.strrncmp_count | + ed->collection->programs.strrncmp_count | |||
+ ed->collection->programs.fnmatch_count | + ed->collection->programs.fnmatch_count | |||
+ ed->collection->programs.nocmp_count; | + ed->collection->programs.nocmp_count; | |||
if (j == 0) return ; | if (j == 0) return ; | |||
skipping to change at line 263 | skipping to change at line 277 | |||
ssp->u.programs.count = j; | ssp->u.programs.count = j; | |||
ssp->signals_patterns = edje_match_programs_signal_init(all, j); | ssp->signals_patterns = edje_match_programs_signal_init(all, j); | |||
ssp->sources_patterns = edje_match_programs_source_init(all, j); | ssp->sources_patterns = edje_match_programs_source_init(all, j); | |||
} | } | |||
int | int | |||
_edje_object_file_set_internal(Evas_Object *obj, const char *file, const ch ar *group, const char *parent, Eina_List *group_path) | _edje_object_file_set_internal(Evas_Object *obj, const char *file, const ch ar *group, const char *parent, Eina_List *group_path) | |||
{ | { | |||
Edje *ed; | Edje *ed; | |||
Evas *tev; | Evas *tev; | |||
Edje_Real_Part *rp; | ||||
Eina_List *textblocks = NULL; | ||||
Eina_List *sources = NULL; | ||||
Eina_List *externals = NULL; | ||||
Eina_List *old_swallows; | Eina_List *old_swallows; | |||
unsigned int n; | unsigned int n; | |||
Eina_List *parts = NULL; | Eina_List *parts = NULL; | |||
int group_path_started = 0; | int group_path_started = 0; | |||
ed = _edje_fetch(obj); | ed = _edje_fetch(obj); | |||
if (!ed) return 0; | if (!ed) return 0; | |||
if (!file) file = ""; | if (!file) file = ""; | |||
if (!group) group = ""; | if (!group) group = ""; | |||
if (((ed->path) && (!strcmp(file, ed->path))) && | if (((ed->path) && (!strcmp(file, ed->path))) && | |||
(ed->group) && (!strcmp(group, ed->group)) && | (ed->group) && (!strcmp(group, ed->group))) | |||
ed->file) | return 1; | |||
{ | ||||
struct stat st; | ||||
if (stat(file, &st) != 0) | ||||
return 1; | ||||
if (st.st_mtime == ed->file->mtime) | ||||
return 1; | ||||
} | ||||
tev = evas_object_evas_get(obj); | tev = evas_object_evas_get(obj); | |||
evas_event_freeze(tev); | evas_event_freeze(tev); | |||
old_swallows = _edje_swallows_collect(ed); | old_swallows = _edje_swallows_collect(ed); | |||
if (_edje_script_only(ed)) _edje_script_only_shutdown(ed); | if (_edje_script_only(ed)) _edje_script_only_shutdown(ed); | |||
if (_edje_lua_script_only(ed)) _edje_lua_script_only_shutdown(ed); | if (_edje_lua_script_only(ed)) _edje_lua_script_only_shutdown(ed); | |||
_edje_file_del(ed); | _edje_file_del(ed); | |||
eina_stringshare_replace(&ed->path, file); | eina_stringshare_replace(&ed->path, file); | |||
eina_stringshare_replace(&ed->group, group); | eina_stringshare_replace(&ed->group, group); | |||
ed->parent = eina_stringshare_add(parent); | ed->parent = eina_stringshare_add(parent); | |||
ed->load_error = EDJE_LOAD_ERROR_NONE; | ed->load_error = EDJE_LOAD_ERROR_NONE; | |||
_edje_file_add(ed); | _edje_file_add(ed); | |||
ed->block_break = 0; | ||||
if (ed->file && ed->file->external_dir) | if (ed->file && ed->file->external_dir) | |||
{ | { | |||
unsigned int i; | unsigned int i; | |||
for (i = 0; i < ed->file->external_dir->entries_count; ++i) | for (i = 0; i < ed->file->external_dir->entries_count; ++i) | |||
edje_module_load(ed->file->external_dir->entries[i].entry); | edje_module_load(ed->file->external_dir->entries[i].entry); | |||
} | } | |||
_edje_textblock_styles_add(ed); | _edje_textblock_styles_add(ed); | |||
skipping to change at line 332 | skipping to change at line 343 | |||
_edje_script_only_init(ed); | _edje_script_only_init(ed); | |||
} | } | |||
else if (ed->collection->lua_script_only) | else if (ed->collection->lua_script_only) | |||
{ | { | |||
ed->load_error = EDJE_LOAD_ERROR_NONE; | ed->load_error = EDJE_LOAD_ERROR_NONE; | |||
_edje_lua_script_only_init(ed); | _edje_lua_script_only_init(ed); | |||
} | } | |||
else | else | |||
{ | { | |||
unsigned int i; | unsigned int i; | |||
int errors = 0; | ||||
/* colorclass stuff */ | /* colorclass stuff */ | |||
for (i = 0; i < ed->collection->parts_count; ++i) | for (i = 0; i < ed->collection->parts_count; ++i) | |||
{ | { | |||
Edje_Part *ep; | Edje_Part *ep; | |||
unsigned int k; | unsigned int k; | |||
ep = ed->collection->parts[i]; | ep = ed->collection->parts[i]; | |||
if (errors) | ||||
break; | ||||
/* Register any color classes in this parts descriptions. */ | /* Register any color classes in this parts descriptions. */ | |||
if ((ep->default_desc) && (ep->default_desc->color_class)) | if ((ep->default_desc) && (ep->default_desc->color_class)) | |||
_edje_color_class_member_add(ed, ep->default_desc->color _class); | _edje_color_class_member_add(ed, ep->default_desc->color _class); | |||
for (k = 0; k < ep->other.desc_count; k++) | for (k = 0; k < ep->other.desc_count; k++) | |||
{ | { | |||
Edje_Part_Description_Common *desc; | Edje_Part_Description_Common *desc; | |||
desc = ep->other.desc[k]; | desc = ep->other.desc[k]; | |||
if (desc->color_class) | if (desc->color_class) | |||
_edje_color_class_member_add(ed, desc->color_class) ; | _edje_color_class_member_add(ed, desc->color_class) ; | |||
} | } | |||
} | } | |||
/* build real parts */ | /* build real parts */ | |||
for (n = 0; n < ed->collection->parts_count; n++) | for (n = 0; n < ed->collection->parts_count; n++) | |||
{ | { | |||
Edje_Part *ep; | Edje_Part *ep; | |||
Edje_Real_Part *rp; | ||||
ep = ed->collection->parts[n]; | ep = ed->collection->parts[n]; | |||
rp = eina_mempool_malloc(_edje_real_part_mp, sizeof(Edje_R eal_Part)); | rp = eina_mempool_malloc(_edje_real_part_mp, sizeof(Edje_R eal_Part)); | |||
if (!rp) | if (!rp) | |||
{ | { | |||
/* FIXME: destroy all allocated ressource, need to h ave a common exit point */ | ||||
ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_ FAILED; | ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_ FAILED; | |||
evas_event_thaw(tev); | evas_event_thaw(tev); | |||
evas_event_thaw_eval(tev); | evas_event_thaw_eval(tev); | |||
return 0; | return 0; | |||
} | } | |||
memset(rp, 0, sizeof (Edje_Real_Part)); | memset(rp, 0, sizeof (Edje_Real_Part)); | |||
if ((ep->dragable.x != 0) || (ep->dragable.y != 0)) | if ((ep->dragable.x != 0) || (ep->dragable.y != 0)) | |||
{ | { | |||
skipping to change at line 416 | skipping to change at line 424 | |||
break; | break; | |||
case EDJE_PART_TYPE_PROXY: | case EDJE_PART_TYPE_PROXY: | |||
case EDJE_PART_TYPE_IMAGE: | case EDJE_PART_TYPE_IMAGE: | |||
rp->object = evas_object_image_add(ed->base.evas); | rp->object = evas_object_image_add(ed->base.evas); | |||
break; | break; | |||
case EDJE_PART_TYPE_TEXT: | case EDJE_PART_TYPE_TEXT: | |||
_edje_text_part_on_add(ed, rp); | _edje_text_part_on_add(ed, rp); | |||
rp->object = evas_object_text_add(ed->base.evas); | rp->object = evas_object_text_add(ed->base.evas); | |||
evas_object_text_font_source_set(rp->object, ed->pat h); | evas_object_text_font_source_set(rp->object, ed->pat h); | |||
break; | break; | |||
case EDJE_PART_TYPE_SWALLOW: | ||||
case EDJE_PART_TYPE_GROUP: | case EDJE_PART_TYPE_GROUP: | |||
sources = eina_list_append(sources, rp); | ||||
case EDJE_PART_TYPE_SWALLOW: | ||||
case EDJE_PART_TYPE_EXTERNAL: | case EDJE_PART_TYPE_EXTERNAL: | |||
if (ep->type == EDJE_PART_TYPE_EXTERNAL) | ||||
externals = eina_list_append(externals, rp); | ||||
rp->object = evas_object_rectangle_add(ed->base.evas ); | rp->object = evas_object_rectangle_add(ed->base.evas ); | |||
evas_object_color_set(rp->object, 0, 0, 0, 0); | evas_object_color_set(rp->object, 0, 0, 0, 0); | |||
evas_object_pass_events_set(rp->object, 1); | evas_object_pass_events_set(rp->object, 1); | |||
evas_object_pointer_mode_set(rp->object, EVAS_OBJECT _POINTER_MODE_NOGRAB); | evas_object_pointer_mode_set(rp->object, EVAS_OBJECT _POINTER_MODE_NOGRAB); | |||
_edje_callbacks_focus_add(rp->object, ed, rp); | _edje_callbacks_focus_add(rp->object, ed, rp); | |||
break; | break; | |||
case EDJE_PART_TYPE_TEXTBLOCK: | case EDJE_PART_TYPE_TEXTBLOCK: | |||
textblocks = eina_list_append(textblocks, rp); | ||||
rp->object = evas_object_textblock_add(ed->base.evas ); | rp->object = evas_object_textblock_add(ed->base.evas ); | |||
break; | break; | |||
case EDJE_PART_TYPE_BOX: | case EDJE_PART_TYPE_BOX: | |||
sources = eina_list_append(sources, rp); | ||||
rp->object = evas_object_box_add(ed->base.evas); | rp->object = evas_object_box_add(ed->base.evas); | |||
rp->anim = _edje_box_layout_anim_new(rp->object); | rp->anim = _edje_box_layout_anim_new(rp->object); | |||
break; | break; | |||
case EDJE_PART_TYPE_TABLE: | case EDJE_PART_TYPE_TABLE: | |||
sources = eina_list_append(sources, rp); | ||||
rp->object = evas_object_table_add(ed->base.evas); | rp->object = evas_object_table_add(ed->base.evas); | |||
break; | break; | |||
case EDJE_PART_TYPE_GRADIENT: | case EDJE_PART_TYPE_GRADIENT: | |||
ERR("SPANK ! SPANK ! SPANK ! YOU ARE USING GRADIENT IN PART %s FROM GROUP %s INSIDE FILE %s !! THEY ARE NOW REMOVED !", | ERR("SPANK ! SPANK ! SPANK ! YOU ARE USING GRADIENT IN PART %s FROM GROUP %s INSIDE FILE %s !! THEY ARE NOW REMOVED !", | |||
ep->name, group, file); | ep->name, group, file); | |||
default: | default: | |||
ERR("wrong part type %i!", ep->type); | ERR("wrong part type %i!", ep->type); | |||
break; | break; | |||
} | } | |||
skipping to change at line 472 | skipping to change at line 486 | |||
} | } | |||
if (ep->precise_is_inside) | if (ep->precise_is_inside) | |||
evas_object_precise_is_inside_set(rp->object, 1); | evas_object_precise_is_inside_set(rp->object, 1); | |||
} | } | |||
if (rp->part->clip_to_id < 0) | if (rp->part->clip_to_id < 0) | |||
evas_object_clip_set(rp->object, ed->base.clipper); | evas_object_clip_set(rp->object, ed->base.clipper); | |||
} | } | |||
} | } | |||
if (n > 0) | if (n > 0) | |||
{ | { | |||
Edje_Real_Part *rp; | ||||
Eina_List *l; | Eina_List *l; | |||
ed->table_parts = malloc(sizeof(Edje_Real_Part *) * n); | ed->table_parts = malloc(sizeof(Edje_Real_Part *) * n); | |||
ed->table_parts_size = n; | ed->table_parts_size = n; | |||
/* FIXME: check malloc return */ | /* FIXME: check malloc return */ | |||
n = 0; | n = 0; | |||
EINA_LIST_FOREACH(parts, l, rp) | EINA_LIST_FOREACH(parts, l, rp) | |||
{ | { | |||
ed->table_parts[n] = rp; | ed->table_parts[n] = rp; | |||
n++; | n++; | |||
skipping to change at line 528 | skipping to change at line 541 | |||
{ | { | |||
rp->events_to = | rp->events_to = | |||
ed->table_parts[rp->part->dragable.event_id % ed->table_parts_size]; | ed->table_parts[rp->part->dragable.event_id % ed->table_parts_size]; | |||
/* events_to may be used only with dragable */ | /* events_to may be used only with dragable */ | |||
if (!rp->events_to->part->dragable.x && | if (!rp->events_to->part->dragable.x && | |||
!rp->events_to->part->dragable.y) | !rp->events_to->part->dragable.y) | |||
rp->events_to = NULL; | rp->events_to = NULL; | |||
} | } | |||
rp->swallow_params.min.w = 0; | rp->swallow_params.min.w = 0; | |||
rp->swallow_params.min.w = 0; | rp->swallow_params.min.h = 0; | |||
rp->swallow_params.max.w = -1; | rp->swallow_params.max.w = -1; | |||
rp->swallow_params.max.h = -1; | rp->swallow_params.max.h = -1; | |||
if (rp->part->type == EDJE_PART_TYPE_TEXT | if (rp->part->type == EDJE_PART_TYPE_TEXT | |||
|| rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) | || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) | |||
{ | { | |||
Edje_Part_Description_Text *text; | Edje_Part_Description_Text *text; | |||
text = (Edje_Part_Description_Text *) rp->param1 .description; | text = (Edje_Part_Description_Text *) rp->param1 .description; | |||
skipping to change at line 596 | skipping to change at line 609 | |||
EDJE_LOAD_BUILD_TABLE(nocmp, ed, i, pr); | EDJE_LOAD_BUILD_TABLE(nocmp, ed, i, pr); | |||
} | } | |||
} | } | |||
_edje_ref(ed); | _edje_ref(ed); | |||
_edje_block(ed); | _edje_block(ed); | |||
_edje_freeze(ed); | _edje_freeze(ed); | |||
// if (ed->collection->script) _edje_embryo_script_init(ed); | // if (ed->collection->script) _edje_embryo_script_init(ed); | |||
_edje_var_init(ed); | _edje_var_init(ed); | |||
for (i = 0; i < ed->table_parts_size; i++) | for (i = 0; i < ed->table_parts_size; i++) | |||
{ | { | |||
Edje_Real_Part *rp; | ||||
rp = ed->table_parts[i]; | rp = ed->table_parts[i]; | |||
evas_object_show(rp->object); | evas_object_show(rp->object); | |||
if (_edje_block_break(ed)) break; | if (_edje_block_break(ed)) break; | |||
if (rp->drag) | if (rp->drag) | |||
{ | { | |||
if (rp->part->dragable.x < 0) rp->drag->val.x = FROM_ DOUBLE(1.0); | if (rp->part->dragable.x < 0) rp->drag->val.x = FROM_ DOUBLE(1.0); | |||
if (rp->part->dragable.y < 0) rp->drag->val.x = FROM_ DOUBLE(1.0); | if (rp->part->dragable.y < 0) rp->drag->val.x = FROM_ DOUBLE(1.0); | |||
_edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->d rag->val.y); | _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->d rag->val.y); | |||
} | } | |||
} | } | |||
ed->recalc_call = 1; | ||||
ed->dirty = 1; | ed->dirty = 1; | |||
#ifdef EDJE_CALC_CACHE | #ifdef EDJE_CALC_CACHE | |||
ed->all_part_change = 1; | ed->all_part_change = 1; | |||
#endif | #endif | |||
if ((evas_object_clipees_get(ed->base.clipper)) && | if ((evas_object_clipees_get(ed->base.clipper)) && | |||
(evas_object_visible_get(obj))) | (evas_object_visible_get(obj))) | |||
evas_object_show(ed->base.clipper); | evas_object_show(ed->base.clipper); | |||
/* instantiate 'internal swallows' */ | /* instantiate 'internal swallows' */ | |||
for (i = 0; i < ed->table_parts_size; i++) | EINA_LIST_FREE(externals, rp) | |||
{ | ||||
Edje_Part_Description_External *external; | ||||
Evas_Object *child_obj; | ||||
external = (Edje_Part_Description_External *) rp->part->d | ||||
efault_desc; | ||||
child_obj = _edje_external_type_add(rp->part->source, | ||||
evas_object_evas_get( | ||||
ed->obj), ed->obj, | ||||
external->external_pa | ||||
rams, rp->part->name); | ||||
if (child_obj) | ||||
{ | ||||
_edje_real_part_swallow(rp, child_obj, EINA_TRUE); | ||||
rp->param1.external_params = _edje_external_params_p | ||||
arse(child_obj, | ||||
external->external_params); | ||||
_edje_external_recalc_apply(ed, rp, NULL, rp->chosen | ||||
_description); | ||||
} | ||||
} | ||||
EINA_LIST_FREE(sources, rp) | ||||
{ | { | |||
Edje_Real_Part *rp; | ||||
/* XXX: curr_item and pack_it don't require to be NULL sin ce | /* XXX: curr_item and pack_it don't require to be NULL sin ce | |||
* XXX: they are just used when source != NULL and type == BOX, | * XXX: they are just used when source != NULL and type == BOX, | |||
* XXX: and they're always set in this case, but GCC fails to | * XXX: and they're always set in this case, but GCC fails to | |||
* XXX: notice that, so let's shut it up | * XXX: notice that, so let's shut it up | |||
*/ | */ | |||
Edje_Pack_Element **curr_item = NULL; | Edje_Pack_Element **curr_item = NULL; | |||
unsigned int item_count = 0; | unsigned int item_count = 0; | |||
Edje_Pack_Element *pack_it = NULL; | Edje_Pack_Element *pack_it = NULL; | |||
const char *source = NULL; | const char *source = NULL; | |||
rp = ed->table_parts[i]; | ||||
switch (rp->part->type) | switch (rp->part->type) | |||
{ | { | |||
case EDJE_PART_TYPE_GROUP: | case EDJE_PART_TYPE_GROUP: | |||
source = rp->part->source; | source = rp->part->source; | |||
break; | break; | |||
case EDJE_PART_TYPE_BOX: | case EDJE_PART_TYPE_BOX: | |||
case EDJE_PART_TYPE_TABLE: | case EDJE_PART_TYPE_TABLE: | |||
if (rp->part->items) | if (rp->part->items) | |||
{ | { | |||
curr_item = rp->part->items; | curr_item = rp->part->items; | |||
item_count = rp->part->items_count; | item_count = rp->part->items_count; | |||
if (item_count > 0) | if (item_count > 0) | |||
{ | { | |||
pack_it = *curr_item; | pack_it = *curr_item; | |||
source = pack_it->source; | source = pack_it->source; | |||
item_count--; | item_count--; | |||
curr_item++; | curr_item++; | |||
} | } | |||
} | } | |||
break; | break; | |||
case EDJE_PART_TYPE_EXTERNAL: | ||||
{ | ||||
Edje_Part_Description_External *external; | ||||
Evas_Object *child_obj; | ||||
external = (Edje_Part_Description_External *) r | ||||
p->part->default_desc; | ||||
child_obj = _edje_external_type_add(rp->part->s | ||||
ource, | ||||
evas_object | ||||
_evas_get(ed->obj), ed->obj, | ||||
external->e | ||||
xternal_params, rp->part->name); | ||||
if (child_obj) | ||||
{ | ||||
_edje_real_part_swallow(rp, child_obj, EIN | ||||
A_TRUE); | ||||
rp->param1.external_params = _edje_externa | ||||
l_params_parse(child_obj, | ||||
external->external_params); | ||||
_edje_external_recalc_apply(ed, rp, NULL, | ||||
rp->chosen_description); | ||||
} | ||||
} | ||||
continue; | ||||
default: | default: | |||
/* This list should only be filled by group, box or | ||||
table, nothing else. */ | ||||
abort(); | ||||
continue; | continue; | |||
} | } | |||
while (source) | while (source) | |||
{ | { | |||
Eina_List *l; | Eina_List *l; | |||
Evas_Object *child_obj; | Evas_Object *child_obj; | |||
const char *group_path_entry = eina_stringshare_add(s ource); | const char *group_path_entry = eina_stringshare_add(s ource); | |||
const char *data; | const char *data; | |||
if (!group_path) | if (!group_path) | |||
{ | { | |||
group_path = eina_list_append(NULL, eina_strings hare_add(group)); | group_path = eina_list_append(NULL, eina_strings hare_add(group)); | |||
group_path_started = 1; | group_path_started = 1; | |||
} | } | |||
/* make sure that this group isn't already in the tre e of parents */ | /* make sure that this group isn't already in the tre e of parents */ | |||
EINA_LIST_FOREACH(group_path, l, data) | EINA_LIST_FOREACH(group_path, l, data) | |||
{ | { | |||
if (data == group_path_entry) | if (data == group_path_entry) | |||
{ | { | |||
ERR("recursive loop group '%s' already inc | ||||
luded inside part '%s' of group '%s' from file '%s'", | ||||
group_path_entry, rp->part->name, grou | ||||
p, file); | ||||
textblocks = eina_list_free(textblocks); | ||||
externals = eina_list_free(externals); | ||||
sources = eina_list_free(sources); | ||||
_edje_thaw(ed); | _edje_thaw(ed); | |||
_edje_unblock(ed); | _edje_unblock(ed); | |||
_edje_unref(ed); | _edje_unref(ed); | |||
_edje_file_del(ed); | _edje_file_del(ed); | |||
eina_stringshare_del(group_path_entry); | eina_stringshare_del(group_path_entry); | |||
if (group_path_started) | if (group_path_started) | |||
{ | { | |||
eina_stringshare_del(eina_list_data_ge t(group_path)); | eina_stringshare_del(eina_list_data_ge t(group_path)); | |||
eina_list_free(group_path); | eina_list_free(group_path); | |||
} | } | |||
skipping to change at line 717 | skipping to change at line 733 | |||
child_obj = edje_object_add(ed->base.evas); | child_obj = edje_object_add(ed->base.evas); | |||
group_path = eina_list_append(group_path, group_path_ entry); | group_path = eina_list_append(group_path, group_path_ entry); | |||
if (rp->part->type == EDJE_PART_TYPE_GROUP) | if (rp->part->type == EDJE_PART_TYPE_GROUP) | |||
{ | { | |||
_edje_real_part_swallow(rp, child_obj, EINA_FAL SE); | _edje_real_part_swallow(rp, child_obj, EINA_FAL SE); | |||
} | } | |||
if (!_edje_object_file_set_internal(child_obj, file, source, rp->part->name, group_path)) | if (!_edje_object_file_set_internal(child_obj, file, source, rp->part->name, group_path)) | |||
{ | { | |||
ERR("impossible to set part '%s' of group '%s' | ||||
from file '%s' to '%s'", | ||||
rp->part->name, group_path_entry, file, sou | ||||
rce); | ||||
textblocks = eina_list_free(textblocks); | ||||
externals = eina_list_free(externals); | ||||
sources = eina_list_free(sources); | ||||
_edje_thaw(ed); | _edje_thaw(ed); | |||
_edje_unblock(ed); | _edje_unblock(ed); | |||
_edje_unref(ed); | _edje_unref(ed); | |||
_edje_file_del(ed); | _edje_file_del(ed); | |||
if (group_path_started) | if (group_path_started) | |||
{ | { | |||
while (group_path) | while (group_path) | |||
{ | { | |||
eina_stringshare_del(eina_list_data_ge t(group_path)); | eina_stringshare_del(eina_list_data_ge t(group_path)); | |||
skipping to change at line 821 | skipping to change at line 842 | |||
eina_stringshare_del(name); | eina_stringshare_del(name); | |||
} | } | |||
} | } | |||
_edje_recalc(ed); | _edje_recalc(ed); | |||
_edje_thaw(ed); | _edje_thaw(ed); | |||
_edje_unblock(ed); | _edje_unblock(ed); | |||
_edje_unref(ed); | _edje_unref(ed); | |||
ed->load_error = EDJE_LOAD_ERROR_NONE; | ed->load_error = EDJE_LOAD_ERROR_NONE; | |||
_edje_emit(ed, "load", NULL); | _edje_emit(ed, "load", NULL); | |||
/* instantiate 'internal swallows' */ | ||||
for (i = 0; i < ed->table_parts_size; i++) | ||||
{ | ||||
Edje_Real_Part *rp; | ||||
rp = ed->table_parts[i]; | /* instantiate 'internal textblock style' */ | |||
if ((rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) && | EINA_LIST_FREE(textblocks, rp) | |||
(rp->part->default_desc)) | if (rp->part->default_desc) | |||
{ | { | |||
Edje_Part_Description_Text *text; | Edje_Part_Description_Text *text; | |||
Edje_Style *stl = NULL; | Edje_Style *stl = NULL; | |||
const char *style; | const char *style; | |||
text = (Edje_Part_Description_Text *) rp->part->defau | text = (Edje_Part_Description_Text *) rp->part->default | |||
lt_desc; | _desc; | |||
style = edje_string_get(&text->text.style); | style = edje_string_get(&text->text.style); | |||
if (style) | if (style) | |||
{ | { | |||
Eina_List *l; | Eina_List *l; | |||
EINA_LIST_FOREACH(ed->file->styles, l, stl) | EINA_LIST_FOREACH(ed->file->styles, l, stl) | |||
{ | { | |||
if ((stl->name) && (!strcmp(stl->name, sty | if ((stl->name) && (!strcmp(stl->name, style) | |||
le))) break; | )) break; | |||
stl = NULL; | stl = NULL; | |||
} | } | |||
} | } | |||
if (stl) | if (stl) | |||
{ | { | |||
if (evas_object_textblock_style_get(rp->object) | if (evas_object_textblock_style_get(rp->object) != | |||
!= stl->style) | stl->style) | |||
evas_object_textblock_style_set(rp->object, s | evas_object_textblock_style_set(rp->object, stl- | |||
tl->style); | >style); | |||
} | } | |||
} | } | |||
} | ||||
} | } | |||
_edje_entry_init(ed); | _edje_entry_init(ed); | |||
evas_event_thaw(tev); | evas_event_thaw(tev); | |||
evas_event_thaw_eval(tev); | evas_event_thaw_eval(tev); | |||
return 1; | return 1; | |||
} | } | |||
else | else | |||
{ | { | |||
evas_event_thaw(tev); | evas_event_thaw(tev); | |||
evas_event_thaw_eval(tev); | evas_event_thaw_eval(tev); | |||
End of changes. 28 change blocks. | ||||
85 lines changed or deleted | 105 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |