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

-- 


Reply via email to