From 96b37e9658dd90c137a0ca30afa15d14616c4442 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 2 May 2020 17:51:15 +0200 Subject: [PATCH] Fixed pre processing --- .../eu/faircode/email/FragmentMessages.java | 2 +- .../java/eu/faircode/email/HtmlHelper.java | 34 +++++++------------ .../java/eu/faircode/email/MessageHelper.java | 2 +- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 388a170e3c..f73ae1f38d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -5268,7 +5268,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. // Write decrypted body String text = Helper.readText(plain); - String html = "
" + HtmlHelper.formatPre(text) + "
"; + String html = "
" + HtmlHelper.formatPre(text) + "
"; Helper.writeText(message.getFile(context), html); db.message().setMessageStored(message.id, new Date().getTime()); db.message().setMessageFts(message.id, false); diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 4f702da903..f00fb1508c 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -697,11 +697,10 @@ public class HtmlHelper { // Pre formatted text // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre - if (!view) - for (Element pre : document.select("pre")) { - pre.html(formatPre(pre.wholeText())); - pre.tagName("div"); - } + for (Element pre : document.select("pre")) { + pre.html(formatPre(pre.wholeText())); + pre.tagName("div"); + } // Code // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/code @@ -1275,9 +1274,9 @@ public class HtmlHelper { for (int j = 0; j < line.length(); j++) { char kar = line.charAt(j); if (kar == '\t') { - l.append(' '); + l.append('\u00A0'); while (l.length() % TAB_SIZE != 0) - l.append(' '); + l.append('\u00A0'); } else l.append(kar); } @@ -1724,35 +1723,31 @@ public class HtmlHelper { // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements NodeTraversor.traverse(new NodeVisitor() { - private int pre = 0; private Element element; private List block = new ArrayList<>(); - private String WHITESPACE = " \t\f\u00A0"; + private String WHITESPACE = " \t\f"; private String WHITESPACE_NL = WHITESPACE + "\r\n"; private Pattern TRIM_WHITESPACE_NL = Pattern.compile("[" + WHITESPACE + "]*\\r?\\n[" + WHITESPACE + "]*"); private List BLOCK_START = Collections.unmodifiableList(Arrays.asList( - "body", "blockquote", "h1", "h2", "h3", "h4", "h5", "h6", "li", "ol", "ul", "pre" + "body", "blockquote", "h1", "h2", "h3", "h4", "h5", "h6", "li", "ol", "ul" )); private List BLOCK_END = Collections.unmodifiableList(Arrays.asList( - "body", "blockquote", "br", "h1", "h2", "h3", "h4", "h5", "h6", "li", "ol", "ul", "pre" + "body", "blockquote", "br", "h1", "h2", "h3", "h4", "h5", "h6", "li", "ol", "ul" )); @Override public void head(Node node, int depth) { - if (node instanceof TextNode) { - if (pre == 0) - block.add((TextNode) node); - } else if (node instanceof Element) { + if (node instanceof TextNode) + block.add((TextNode) node); + else if (node instanceof Element) { element = (Element) node; if (BLOCK_START.contains(element.tagName())) { normalizeText(block); block.clear(); } - if ("pre".equals(element.tagName())) - pre++; } } @@ -1764,8 +1759,6 @@ public class HtmlHelper { normalizeText(block); block.clear(); } - if ("pre".equals(element.tagName())) - pre--; } } @@ -1974,9 +1967,6 @@ public class HtmlHelper { newline(start); newline(ssb.length()); break; - case "pre": - // Do nothing - break; case "small": ssb.setSpan(new RelativeSizeSpan(FONT_SMALL), start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); break; diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index d77d776391..2654405eee 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -1589,7 +1589,7 @@ public class MessageHelper { if (part.isMimeType("text/plain")) { if ("flowed".equalsIgnoreCase(ct.getParameter("format"))) result = HtmlHelper.flow(result); - result = "
" + HtmlHelper.formatPre(result) + "
"; + result = "
" + HtmlHelper.formatPre(result) + "
"; } else if (part.isMimeType("text/html")) { if (TextUtils.isEmpty(charset)) { //