diff --git a/app/src/main/java/eu/faircode/email/ActivitySignature.java b/app/src/main/java/eu/faircode/email/ActivitySignature.java index dde70b6648..f8f6a58131 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySignature.java +++ b/app/src/main/java/eu/faircode/email/ActivitySignature.java @@ -233,7 +233,7 @@ public class ActivitySignature extends ActivityBase { return etText.getText().toString(); else { String html = HtmlHelper.toHtml(etText.getText(), this); - Document d = HtmlHelper.fixEdit(JsoupEx.parse(html)); + Document d = JsoupEx.parse(html); return d.body().html(); } } diff --git a/app/src/main/java/eu/faircode/email/FragmentAnswer.java b/app/src/main/java/eu/faircode/email/FragmentAnswer.java index cf7389a002..049fe58a52 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAnswer.java +++ b/app/src/main/java/eu/faircode/email/FragmentAnswer.java @@ -272,7 +272,7 @@ public class FragmentAnswer extends FragmentBase { if (TextUtils.isEmpty(name)) throw new IllegalArgumentException(context.getString(R.string.title_no_name)); - Document document = HtmlHelper.fixEdit(JsoupEx.parse(html)); + Document document = JsoupEx.parse(html); DB db = DB.getInstance(context); if (id < 0) { diff --git a/app/src/main/java/eu/faircode/email/HtmlEx.java b/app/src/main/java/eu/faircode/email/HtmlEx.java index c8b8e1b8f5..5cfceaccd2 100644 --- a/app/src/main/java/eu/faircode/email/HtmlEx.java +++ b/app/src/main/java/eu/faircode/email/HtmlEx.java @@ -276,7 +276,7 @@ public class HtmlEx { private /* static */ void withinBlockquoteConsecutive(StringBuilder out, Spanned text, int start, int end) { - out.append(""); + out.append(""); int next; for (int i = start; i < end; i = next) { @@ -294,21 +294,21 @@ public class HtmlEx { withinParagraph(out, text, i, next - nl); - if (nl == 1) { + if (nl == 0) { out.append("
\n"); } else { - for (int j = 2; j < nl; j++) { + for (int j = 0; j < nl; j++) { out.append("
"); } if (next != end) { /* Paragraph should be closed and reopened */ - out.append("

\n"); - out.append(""); + out.append("\n"); + out.append(""); } } } - out.append("

\n"); + out.append("\n"); } private /* static */ void withinParagraph(StringBuilder out, Spanned text, int start, int end) { diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 786887c8d6..428b80024d 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -289,7 +289,7 @@ public class HtmlHelper { static Document sanitizeCompose(Context context, String html, boolean show_images) { try { - Document parsed = fixEdit(JsoupEx.parse(html)); + Document parsed = JsoupEx.parse(html); return sanitize(context, parsed, false, show_images); } catch (Throwable ex) { // OutOfMemoryError @@ -302,22 +302,6 @@ public class HtmlHelper { } } - static Document fixEdit(Document document) { - // Prevent extra newline at end - Element body = document.body(); - if (body != null && body.childrenSize() > 0) { - Element holder = body.child(body.childrenSize() - 1); - if ("p".equals(holder.tagName())) { - holder.tagName("span"); - int c = holder.childNodeSize(); - Node last = (c > 0 ? holder.childNode(c - 1) : null); - if (last == null || !"br".equals(last.nodeName())) - holder.appendChild(new Element("br")); - } - } - return document; - } - static Document sanitizeView(Context context, Document parsed, boolean show_images) { try { return sanitize(context, parsed, true, show_images); diff --git a/patches/HtmlEx.patch b/patches/HtmlEx.patch new file mode 100644 index 0000000000..6ca1687bd2 --- /dev/null +++ b/patches/HtmlEx.patch @@ -0,0 +1,40 @@ +diff --git a/app/src/main/java/eu/faircode/email/HtmlEx.java b/app/src/main/java/eu/faircode/email/HtmlEx.java +index c8b8e1b8f..5cfceaccd 100644 +--- a/app/src/main/java/eu/faircode/email/HtmlEx.java ++++ b/app/src/main/java/eu/faircode/email/HtmlEx.java +@@ -276,7 +276,7 @@ public class HtmlEx { + + private /* static */ void withinBlockquoteConsecutive(StringBuilder out, Spanned text, int start, + int end) { +- out.append(""); ++ out.append(""); + + int next; + for (int i = start; i < end; i = next) { +@@ -294,21 +294,21 @@ public class HtmlEx { + + withinParagraph(out, text, i, next - nl); + +- if (nl == 1) { ++ if (nl == 0) { + out.append("
\n"); + } else { +- for (int j = 2; j < nl; j++) { ++ for (int j = 0; j < nl; j++) { + out.append("
"); + } + if (next != end) { + /* Paragraph should be closed and reopened */ +- out.append("

\n"); +- out.append(""); ++ out.append("\n"); ++ out.append(""); + } + } + } + +- out.append("

\n"); ++ out.append("\n"); + } + + private /* static */ void withinParagraph(StringBuilder out, Spanned text, int start, int end) {