[evolution] I#1365 - Composer: Nested quoted text can get lost in Reply on HTML mail
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#1365 - Composer: Nested quoted text can get lost in Reply on HTML mail
- Date: Mon, 15 Feb 2021 14:20:23 +0000 (UTC)
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. 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. 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) " 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) " 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]