[evolution] I#1365 - Composer: Nested quoted text can get lost in Reply on HTML mail



commit 6a7df753b5e10f543dd930fb6a26ec9e126699c8
Author: Milan Crha <mcrha redhat com>
Date:   Mon Feb 15 15:18:48 2021 +0100

    I#1365 - Composer: Nested quoted text can get lost in Reply on HTML mail
    
    Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1365

 data/webkit/e-editor.js                  |  14 +++-
 src/e-util/test-html-editor-units-bugs.c | 114 +++++++++++++++++++++++++++++++
 2 files changed, 126 insertions(+), 2 deletions(-)
---
diff --git a/data/webkit/e-editor.js b/data/webkit/e-editor.js
index aef0bdd7a3..6d34d7dda6 100644
--- a/data/webkit/e-editor.js
+++ b/data/webkit/e-editor.js
@@ -5514,9 +5514,19 @@ EvoEditor.processLoadedContent = function()
 
                                EvoEditor.splitPreTexts(node, false, list);
 
-                               if (node.tagName == "PRE") {
+                               if (node.tagName == "PRE" || list.length > 0) {
+                                       var putInto = null;
+
+                                       if (node.tagName == "BLOCKQUOTE") {
+                                               putInto = node.cloneNode(false);
+                                               node.parentElement.insertBefore(putInto, node);
+                                       }
+
                                        for (ii = 0; ii < list.length; ii++) {
-                                               node.parentElement.insertBefore(list[ii], node);
+                                               if (putInto === null)
+                                                       node.parentElement.insertBefore(list[ii], node);
+                                               else
+                                                       putInto.append(list[ii]);
                                        }
 
                                        node.remove();
diff --git a/src/e-util/test-html-editor-units-bugs.c b/src/e-util/test-html-editor-units-bugs.c
index 0ff8d9871b..2ffef09876 100644
--- a/src/e-util/test-html-editor-units-bugs.c
+++ b/src/e-util/test-html-editor-units-bugs.c
@@ -2191,6 +2191,119 @@ test_issue_1157 (TestFixture *fixture)
                g_test_fail ();
 }
 
+static void
+test_issue_1365 (TestFixture *fixture)
+{
+       test_utils_fixture_change_setting_boolean (fixture, "org.gnome.evolution.mail", 
"composer-wrap-quoted-text-in-replies", TRUE);
+       test_utils_fixture_change_setting_int32 (fixture, "org.gnome.evolution.mail", 
"composer-word-wrap-length", 25);
+
+       if (!test_utils_process_commands (fixture,
+               "mode:plain\n")) {
+               g_test_fail ();
+               return;
+       }
+
+       test_utils_insert_content (fixture,
+               "<body><div>aa bb,</div>"
+               "<div><br></div>"
+               "<div>cc dd. &nbsp;ee ff.</div>"
+               "<div><br></div>"
+               "<div>xxxx:</div>"
+               "<div>123456789 1234 6789 123 56 89.<br><br></div>"
+               "<div class=\"gmail_quote\">yyy:</div>"
+               "<blockquote type=\"cite\" style=\"margin:0 0 0 .8ex; border-left:2px #729fcf 
solid;padding-left:1ex\">"
+               "<pre class=\"k9mail\">zz yy,<br>"
+               "<br>"
+               "xxx,<br>"
+               "www 123456789 12 456 89 123 567 9 12 456 89.<br>"
+               "<br>"
+               "vv,<br>"
+               " uu<br></pre>"
+               "<blockquote type=\"cite\" style=\"margin:0 0 0 .8ex; border-left:2px #729fcf 
solid;padding-left:1ex\">"
+               "<pre class=\"k9mail\">ZZ YY,<br>"
+               "<br>"
+               "XXX,<br>"
+               "WWW 987654321 98 654 21 987 543 1 98 654 21.<br>"
+               "<br>"
+               "VV,<br>"
+               " UU<br></pre>"
+               "</blockquote>"
+               "</blockquote>"
+               "<div><br></div>"
+               "<span class=\"-x-evo-to-body\" data-credits=\"Credits:\"></span>"
+               "<span class=\"-x-evo-cite-body\"></span></body>",
+               E_CONTENT_EDITOR_INSERT_REPLACE_ALL | E_CONTENT_EDITOR_INSERT_TEXT_HTML);
+
+       if (!test_utils_run_simple_test (fixture,
+               "",
+               HTML_PREFIX "<div style=\"width: 25ch;\">Credits:</div>"
+               "<blockquote type=\"cite\">"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "aa bb,</div>"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "<br></div>"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "cc dd. &nbsp;ee ff.</div>"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "<br></div>"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "xxxx:</div>"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "123456789 1234 6789 123<br class=\"-x-evo-wrap-br\">"
+                       QUOTE_SPAN (QUOTE_CHR) "56 89.</div>"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "<br></div>"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "yyy:</div>"
+                       "<blockquote type=\"cite\">"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "zz yy,</div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "<br></div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "xxx,</div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "www 123456789 12 456<br 
class=\"-x-evo-wrap-br\">"
+                               QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "89 123 567 9 12 456<br 
class=\"-x-evo-wrap-br\">"
+                               QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "89.</div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "<br></div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "vv,</div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR) "&nbsp;uu</div>"
+                       "<blockquote type=\"cite\">"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "ZZ YY,</div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "<br></div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "XXX,</div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "WWW 987654321 98<br 
class=\"-x-evo-wrap-br\">"
+                               QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "654 21 987 543 1 98<br 
class=\"-x-evo-wrap-br\">"
+                               QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "654 21.</div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "<br></div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "VV,</div>"
+                       "<div>" QUOTE_SPAN (QUOTE_CHR QUOTE_CHR QUOTE_CHR) "&nbsp;UU</div>"
+                       "</blockquote>"
+                       "</blockquote>"
+               "<div>" QUOTE_SPAN (QUOTE_CHR) "<br></div>"
+               "</blockquote>"
+               HTML_SUFFIX,
+               "Credits:\n"
+               "> aa bb,\n"
+               "> \n"
+               "> cc dd. " UNICODE_NBSP "ee ff.\n"
+               "> \n"
+               "> xxxx:\n"
+               "> 123456789 1234 6789 123\n"
+               "> 56 89.\n"
+               "> \n"
+               "> yyy:\n"
+               "> > zz yy,\n"
+               "> > \n"
+               "> > xxx,\n"
+               "> > www 123456789 12 456\n"
+               "> > 89 123 567 9 12 456\n"
+               "> > 89.\n"
+               "> > \n"
+               "> > vv,\n"
+               "> > " UNICODE_NBSP "uu\n"
+               "> > > ZZ YY,\n"
+               "> > > \n"
+               "> > > XXX,\n"
+               "> > > WWW 987654321 98\n"
+               "> > > 654 21 987 543 1 98\n"
+               "> > > 654 21.\n"
+               "> > > \n"
+               "> > > VV,\n"
+               "> > > " UNICODE_NBSP "UU\n"
+               "> \n"))
+               g_test_fail ();
+}
+
 void
 test_add_html_editor_bug_tests (void)
 {
@@ -2230,4 +2343,5 @@ test_add_html_editor_bug_tests (void)
        test_utils_add_test ("/issue/1214", test_issue_1214);
        test_utils_add_test ("/issue/1330", test_issue_1330);
        test_utils_add_test ("/issue/1157", test_issue_1157);
+       test_utils_add_test ("/issue/1365", test_issue_1365);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]