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 --