diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -8379,12 +8379,37 @@
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_async_block(obj);
+ Efl_Text_Cursor_Handle *cur;
+ char* chr;
+ Eina_Bool old_mode = o->legacy_newline;
+
if (o->legacy_newline == mode)
return;
o->legacy_newline = mode;
- /* FIXME: Should recreate all the textnodes... For now, it's just
- * for new text inserted. */
+
+ if (!o->multiline)
+ return;
+
+ efl_event_freeze(eo_obj);
+
+ cur = evas_object_textblock_cursor_new(eo_obj);
+
+ do
+ {
+ chr = evas_textblock_cursor_content_get(cur);
+ if(chr && !strcmp(chr, "
"))
+ {
+ o->legacy_newline = old_mode;
+ evas_textblock_cursor_char_delete(cur);
+ o->legacy_newline = mode;
+ evas_textblock_cursor_format_append(cur, "
");
+ }
+ } while (evas_textblock_cursor_char_next(cur));
+
+ evas_textblock_cursor_free(cur);
+
+ efl_event_thaw(eo_obj);
}
EOLIAN static Eina_Bool
diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c
--- a/src/tests/evas/evas_test_textblock.c
+++ b/src/tests/evas/evas_test_textblock.c
@@ -4892,6 +4892,22 @@
ck_assert_str_eq(res, "bc
");
free(res);
+ efl_text_set(txt, "Test\n Text\u2029para");
+ Efl_Text_Cursor_Object *cursor = efl_canvas_textblock_cursor_create(txt);
+ efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST);
+ ck_assert_msg(efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+ ck_assert_msg(!efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+
+ efl_canvas_textblock_newline_as_paragraph_separator_set(txt, EINA_TRUE);
+ efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST);
+ ck_assert_msg(efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+ ck_assert_msg(efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+
+ efl_canvas_textblock_newline_as_paragraph_separator_set(txt, EINA_FALSE);
+ efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST);
+ ck_assert_msg(efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+ ck_assert_msg(!efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+
END_EFL_CANVAS_TEXTBLOCK_TEST();
}
EFL_END_TEST