cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5537d58639f54dad82ede454287497d4ea73ff18

commit 5537d58639f54dad82ede454287497d4ea73ff18
Author: a.srour <[email protected]>
Date:   Wed Dec 18 08:33:30 2019 +0000

    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 <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D10896
---
 src/lib/evas/canvas/evas_object_textblock.c | 18 ++++--------------
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index d7c629705e..0c31bd8189 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -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);
           }
      }

-- 


Reply via email to