woohyun pushed a commit to branch master.

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

commit c43630c22aa103798211c82a383213062ca98b82
Author: AbdullehGhujeh <abdullahhasa...@gmail.com>
Date:   Mon Jun 22 17:02:05 2020 +0900

    evas textblock : update font source when it set using font_source_set
    
    Summary:
    when we set font source, for example with efl_text_font_source_set, the 
font source will not be updated in the textblock.
    
    this is have same results that has been done in D9548
    
    Test Plan:
       #define EFL_EO_API_SUPPORT 1
       #define EFL_BETA_API_SUPPORT 1
    
       #include <Efl_Ui.h>
    
       static void
       _gui_quit_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
       {
          efl_exit(0);
       }
    
       static Eo *
       _create_label(Eo *win, Eo *bx)
       {
          Eo *en;
          en = efl_add(EFL_UI_TEXTBOX_CLASS, win);
          printf("Added Efl.Ui.Text object\n");
          efl_text_interactive_editable_set(en, EINA_FALSE);
          efl_pack(bx, en);
          return en;
       }
    
       static void
       _gui_setup()
       {
          char buf[512], f_buf[512];
          Eo *win, *bx;
    
          win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
                      efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
                      efl_text_set(efl_added, "Hello World"),
                      efl_ui_win_autodel_set(efl_added, EINA_TRUE));
    
          // when the user clicks "close" on a window there is a request to 
delete
          efl_event_callback_add(win, EFL_UI_WIN_EVENT_DELETE_REQUEST, 
_gui_quit_cb, NULL);
    
          bx = efl_add(EFL_UI_BOX_CLASS, win,
                      efl_content_set(win, efl_added),
                      efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(360, 
240)));
    
          snprintf(buf, sizeof(buf), "./TestFontSource.eet");
    
          Eo *en = _create_label(win, bx);
          efl_text_set(en, "Hello, This Text Use The Font : 
Does_Not_Exists_Font_1 : Source + Font Name");
          efl_text_font_source_set(en, buf);
          efl_text_font_family_set(en, "Does_Not_Exists_Font_1");
          efl_text_font_size_set(en, 35);
    
          en = _create_label(win, bx);
          efl_text_set(en, "Hello, This Text Use The Font : 
Does_Not_Exists_Font_1 : Font Name");
          efl_text_font_family_set(en, "Does_Not_Exists_Font_1");
          efl_text_font_size_set(en, 35);
    
          en = _create_label(win, bx);
          efl_text_set(en, "Hello, This Text Use The Font : 
Does_Not_Exists_Font_2 : Source + Font Name");
          efl_text_font_source_set(en, buf);
          efl_text_font_family_set(en, "Does_Not_Exists_Font_2");
          efl_text_font_size_set(en, 35);
    
          en = _create_label(win, bx);
          efl_text_set(en, "Hello, This Text Use The Font : 
Does_Not_Exists_Font_2 : Font Name");
          efl_text_font_family_set(en, "Does_Not_Exists_Font_2");
          efl_text_font_size_set(en, 35);
       }
    
       EAPI_MAIN void
       efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
       {
          _gui_setup();
       }
       EFL_MAIN()
    
    Reviewers: ali.alzyod, woohyun, bowonryu, cedric
    
    Reviewed By: ali.alzyod
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D11757
---
 src/lib/evas/canvas/evas_object_textblock.c |   1 +
 src/tests/evas/evas_test_textblock.c        |  32 ++++++++++++++++++++++++++++
 src/tests/evas/fonts/TestFontSource.eet     | Bin 0 -> 3742912 bytes
 3 files changed, 33 insertions(+)

diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index 0889de197d..7c18f8c175 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -4343,6 +4343,7 @@ _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);
+             eina_stringshare_replace(&(fmt->font.source), 
_FMT_INFO(font_source));
              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,
diff --git a/src/tests/evas/evas_test_textblock.c 
b/src/tests/evas/evas_test_textblock.c
index e56b1d3912..440d405105 100644
--- a/src/tests/evas/evas_test_textblock.c
+++ b/src/tests/evas/evas_test_textblock.c
@@ -27,6 +27,7 @@ _evas_textblock_format_offset_get(const 
Evas_Object_Textblock_Node_Format *n);
 /* end of functions defined in evas_object_textblock.c */
 
 #define TEST_FONT "font=DejaVuSans,UnDotum,malayalam font_source=" 
TESTS_SRC_DIR "/fonts/TestFont.eet"
+#define TEST_FONT_SOURCE TESTS_SRC_DIR "/fonts/TestFontSource.eet"
 
 static const char *style_buf =
    "DEFAULT='" TEST_FONT " font_size=10 color=#000 text_class=entry'"
@@ -5075,6 +5076,36 @@ EFL_START_TEST(efl_text_markup)
 }
 EFL_END_TEST
 
+EFL_START_TEST(efl_text_font_source)
+{
+   START_EFL_CANVAS_TEXTBLOCK_TEST();
+
+   Eina_Size2D size1, size2;
+
+   efl_canvas_textblock_style_apply(txt,"\tfont_size=30\t");
+   efl_text_markup_set(txt, "Hello, This Text Use The Font : 
Does_Not_Exists_Font");
+
+   efl_text_font_family_set(txt, "Does_Not_Exists_Font_1");
+   size1 = efl_canvas_textblock_size_native_get(txt);
+
+   efl_text_font_source_set(txt, TEST_FONT_SOURCE);
+   efl_text_font_family_set(txt, "Does_Not_Exists_Font_1");
+   size2 = efl_canvas_textblock_size_native_get(txt);
+   ck_assert_int_ne(size1.w, size2.w);
+
+   efl_text_font_source_set(txt, "");
+   efl_text_font_family_set(txt, "Does_Not_Exists_Font_2");
+   size1 = efl_canvas_textblock_size_native_get(txt);
+
+   efl_text_font_source_set(txt, TEST_FONT_SOURCE);
+   efl_text_font_family_set(txt, "Does_Not_Exists_Font_2");
+   size2 = efl_canvas_textblock_size_native_get(txt);
+   ck_assert_int_ne(size1.w, size2.w);
+
+   END_EFL_CANVAS_TEXTBLOCK_TEST();
+}
+EFL_END_TEST
+
 void evas_test_textblock(TCase *tc)
 {
    tcase_add_test(tc, evas_textblock_simple);
@@ -5115,5 +5146,6 @@ void evas_test_textblock(TCase *tc)
    tcase_add_test(tc, efl_canvas_textblock_style);
    tcase_add_test(tc, efl_text_style);
    tcase_add_test(tc, efl_text_markup);
+   tcase_add_test(tc, efl_text_font_source);
 }
 
diff --git a/src/tests/evas/fonts/TestFontSource.eet 
b/src/tests/evas/fonts/TestFontSource.eet
new file mode 100644
index 0000000000..082fd956e1
Binary files /dev/null and b/src/tests/evas/fonts/TestFontSource.eet differ

-- 


Reply via email to