diff --git a/ChangeLog b/ChangeLog index ac89338be6..20a5f11ca0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-05-22 ChunEon Park (Hermet) + + * Edje textblock: keep the text styles when new font by the text class is applied. + 2013-05-16 Tom Hacohen * Edje textblock: Fixed issue with quoted formats. diff --git a/NEWS b/NEWS index b2bfcb196f..899d3b25b3 100644 --- a/NEWS +++ b/NEWS @@ -271,3 +271,4 @@ Fixes: * Edje entry: return surrounding string until the start position of selection * Ecore-imf: fix crash when ecore_imf_context_del is called in ecore_imf_context_input_panel_callback_call * Edje textblock: Fixed issue with quoted formats. + * Edje textblock: Keep the text styles when new font by the text class is applied. diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index af9b055738..5cc0075d80 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -1972,13 +1972,16 @@ void _edje_text_init(void); void _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep); void _edje_text_part_on_del(Edje *ed, Edje_Part *ep); void _edje_text_recalc_apply(Edje *ed, - Edje_Real_Part *ep, - Edje_Calc_Params *params, - Edje_Part_Description_Text *chosen_desc); + Edje_Real_Part *ep, + Edje_Calc_Params *params, + Edje_Part_Description_Text *chosen_desc); Evas_Font_Size _edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc); const char * _edje_text_class_font_get(Edje *ed, - Edje_Part_Description_Text *chosen_desc, - int *size, char **free_later); + Edje_Part_Description_Text *chosen_desc, + int *size, char **free_later); +const char * _edje_text_font_get(const char *base, const char *new, + char **free_later); + Edje_Real_Part *_edje_real_part_get(const Edje *ed, const char *part); diff --git a/src/lib/edje/edje_text.c b/src/lib/edje/edje_text.c index 4b43ca1a63..bb1cf9a510 100644 --- a/src/lib/edje/edje_text.c +++ b/src/lib/edje/edje_text.c @@ -102,7 +102,7 @@ _edje_text_fit_x(Edje *ed, Edje_Real_Part *ep, return text; } -static const char * +const char * _edje_text_font_get(const char *base, const char *new, char **free_later) { const char *base_style, *new_style, *aux; diff --git a/src/lib/edje/edje_textblock_styles.c b/src/lib/edje/edje_textblock_styles.c index 42fd93554c..a249649914 100644 --- a/src/lib/edje/edje_textblock_styles.c +++ b/src/lib/edje/edje_textblock_styles.c @@ -238,12 +238,17 @@ _edje_textblock_style_all_update(Edje *ed) if (tag->font) { const char *f; + char *sfont = NULL; eina_strbuf_append(txt, " "); eina_strbuf_append(txt, "font="); - f = (tc && tc->font) ? tc->font : tag->font; + if (tc) f = _edje_text_font_get(tag->font, tc->font, &sfont); + else f = tag->font; + eina_strbuf_append_escaped(txt, f); + + if (sfont) free(sfont); } eina_strbuf_append(txt, "'");