Fix textblock style when "lang=x" is presented

This patch should fix `textblock`'s style issue when `lang` property presented, also fix leak when changing font_lang property in `Efl.Canvas.Text`

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10896
This commit is contained in:
a.srour 2019-12-18 08:33:30 +00:00 committed by Cedric BAIL
parent ec3f67992a
commit 5537d58639
1 changed files with 4 additions and 14 deletions

View File

@ -2900,7 +2900,7 @@ _default_format_command(Evas_Object *eo_obj, Evas_Object_Textblock_Format *fmt,
else if (cmd == langstr)
{
changed = eina_stringshare_replace(&(_FMT_INFO(font_lang)),
evas_font_lang_normalize(param));
param);
}
else if (cmd == gfx_filterstr)
{
@ -4097,7 +4097,7 @@ _layout_format_push(Ctxt *c, Evas_Object_Textblock_Format *fmt,
fmt->font.fdesc = evas_font_desc_new();
eina_stringshare_replace(&(fmt->font.fdesc->lang),
evas_font_lang_normalize("auto"));
evas_font_lang_normalize(_FMT_INFO(font_lang)));
eina_stringshare_replace(&(fmt->font.fdesc->fallbacks),
_FMT_INFO(font_fallbacks));
@ -4105,7 +4105,6 @@ _layout_format_push(Ctxt *c, Evas_Object_Textblock_Format *fmt,
fmt->font.fdesc->weight = _FMT_INFO(font_weight);
fmt->font.fdesc->slant = _FMT_INFO(font_slant);
fmt->font.fdesc->width = _FMT_INFO(font_width);
fmt->font.fdesc->lang = _FMT_INFO(font_lang);
evas_font_name_parse(fmt->font.fdesc, _FMT_INFO(font));
fmt->font.font = evas_font_load(evas_obj->layer->evas->font_path,
evas_obj->layer->evas->hinting,
@ -16237,19 +16236,10 @@ _efl_canvas_textblock_efl_text_font_font_fallbacks_get(const Eo *obj EINA_UNUSED
static void
_efl_canvas_textblock_efl_text_font_font_lang_set(Eo *obj EINA_UNUSED, Efl_Canvas_Textblock_Data *o EINA_UNUSED, const char *font_lang EINA_UNUSED)
{
Eina_Stringshare *nfont_lang;
if (o->default_format.info.font_lang != font_lang)
if (_FMT_INFO(font_lang) != font_lang)
{
nfont_lang = eina_stringshare_add(font_lang);
if (nfont_lang == _FMT_INFO(font_lang))
if (eina_stringshare_replace(&_FMT_INFO(font_lang), font_lang))
{
/* Already stringshared here, unref */
eina_stringshare_del(nfont_lang);
}
else
{
// Set immediately, load font_lang later
_FMT_INFO(font_lang) = nfont_lang;
_canvas_text_format_changed(obj, o);
}
}