bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3560b0f62f03c72dac87b244a3f76d6d31fa774b
commit 3560b0f62f03c72dac87b244a3f76d6d31fa774b Author: ali <[email protected]> Date: Wed Feb 5 16:01:52 2020 +0000 evas_object_textbox: deal with <br> <tab> without closing '/' This causes many issues because textbox functions deals with <br> <tab> differently depending that user write them with or without '/' at the end (for example <br> vs <br/>) while most functionaliity are the same (like viewing <br> and <br/> are the same). cursor dealing with these tags can be differently. now we will assume <br> <tab> are already have there own closing tag, even if it is missing Reviewed-by: Marcel Hollerbach <[email protected]> Differential Revision: https://phab.enlightenment.org/D11293 --- src/lib/evas/canvas/evas_object_textblock.c | 7 +++++-- src/tests/evas/evas_test_textblock.c | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 3b4ab026a3..22924df7f9 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -11809,12 +11809,15 @@ _evas_textblock_node_format_new(Efl_Canvas_Textblock_Data *o, const char *_forma format_len--; /* We don't care about '/' */ n->own_closer = EINA_TRUE; } - else if (format_len == 2) + else if (format_len < 4) { + /* br,ps,tab are already own_closer without '/' */ char tmp[format_len + 1]; strncpy(tmp, format, format_len); tmp[format_len] = '\0'; - if (_IS_PARAGRAPH_SEPARATOR(o, tmp)) + if (_IS_PARAGRAPH_SEPARATOR(o, tmp) || + _IS_LINE_SEPARATOR(tmp) || + _IS_TAB(tmp)) { n->own_closer = EINA_TRUE; } diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c index 76bf4c68b1..d4b036c53f 100644 --- a/src/tests/evas/evas_test_textblock.c +++ b/src/tests/evas/evas_test_textblock.c @@ -4777,6 +4777,13 @@ EFL_START_TEST(efl_canvas_textblock_cursor) ck_assert_int_eq(rect2.y, rect.y); #endif + //Efl able to deal with br tab without closing tag "/" + efl_text_markup_set(txt, "a<br>a<tab>a"); + efl_text_cursor_move(nCur, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST); + efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST); + efl_text_cursor_range_delete(nCur, cur_obj); + ck_assert_str_eq(efl_text_markup_get(txt), ""); + END_EFL_CANVAS_TEXTBLOCK_TEST(); } EFL_END_TEST --
