From 3560b0f62f03c72dac87b244a3f76d6d31fa774b Mon Sep 17 00:00:00 2001 From: ali Date: Wed, 5 Feb 2020 16:01:52 +0000 Subject: [PATCH] evas_object_textbox: deal with
without closing '/' This causes many issues because textbox functions deals with
differently depending that user write them with or without '/' at the end (for example
vs
) while most functionaliity are the same (like viewing
and
are the same). cursor dealing with these tags can be differently. now we will assume
are already have there own closing tag, even if it is missing Reviewed-by: Marcel Hollerbach 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
aa"); + 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