mirror of https://github.com/M66B/FairEmail.git
Skip normalizing plain text
This commit is contained in:
parent
57092f01f0
commit
3f1f8da05c
|
@ -75,7 +75,7 @@ public class EditTextCompose extends FixedEditText {
|
||||||
CharSequence text = item.getText();
|
CharSequence text = item.getText();
|
||||||
if (text == null)
|
if (text == null)
|
||||||
return false;
|
return false;
|
||||||
html = "<div>" + HtmlHelper.formatPre(text.toString()) + "</div>";
|
html = "<div plain=\"true\">" + HtmlHelper.formatPre(text.toString()) + "</div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
Document document = HtmlHelper.sanitizeCompose(context, html, false);
|
Document document = HtmlHelper.sanitizeCompose(context, html, false);
|
||||||
|
|
|
@ -5272,7 +5272,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
|
|
||||||
// Write decrypted body
|
// Write decrypted body
|
||||||
String text = Helper.readText(plain);
|
String text = Helper.readText(plain);
|
||||||
String html = "<div>" + HtmlHelper.formatPre(text) + "</div>";
|
String html = "<div plain=\"true\">" + HtmlHelper.formatPre(text) + "</div>";
|
||||||
Helper.writeText(message.getFile(context), html);
|
Helper.writeText(message.getFile(context), html);
|
||||||
db.message().setMessageStored(message.id, new Date().getTime());
|
db.message().setMessageStored(message.id, new Date().getTime());
|
||||||
db.message().setMessageFts(message.id, false);
|
db.message().setMessageFts(message.id, false);
|
||||||
|
|
|
@ -446,6 +446,7 @@ public class HtmlHelper {
|
||||||
.addAttributes(":all", "class")
|
.addAttributes(":all", "class")
|
||||||
.addAttributes(":all", "style")
|
.addAttributes(":all", "style")
|
||||||
.addAttributes("font", "size")
|
.addAttributes("font", "size")
|
||||||
|
.addAttributes("div", "plain")
|
||||||
.removeTags("col", "colgroup", "thead", "tbody")
|
.removeTags("col", "colgroup", "thead", "tbody")
|
||||||
.removeAttributes("table", "width")
|
.removeAttributes("table", "width")
|
||||||
.removeAttributes("td", "colspan", "rowspan", "width")
|
.removeAttributes("td", "colspan", "rowspan", "width")
|
||||||
|
@ -731,6 +732,7 @@ public class HtmlHelper {
|
||||||
for (Element pre : document.select("pre")) {
|
for (Element pre : document.select("pre")) {
|
||||||
pre.html(formatPre(pre.wholeText()));
|
pre.html(formatPre(pre.wholeText()));
|
||||||
pre.tagName("div");
|
pre.tagName("div");
|
||||||
|
pre.attr("plain", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Code
|
// Code
|
||||||
|
@ -1311,9 +1313,9 @@ public class HtmlHelper {
|
||||||
for (int j = 0; j < line.length(); j++) {
|
for (int j = 0; j < line.length(); j++) {
|
||||||
char kar = line.charAt(j);
|
char kar = line.charAt(j);
|
||||||
if (kar == '\t') {
|
if (kar == '\t') {
|
||||||
l.append('\u00A0');
|
l.append(' ');
|
||||||
while (l.length() % TAB_SIZE != 0)
|
while (l.length() % TAB_SIZE != 0)
|
||||||
l.append('\u00A0');
|
l.append(' ');
|
||||||
} else
|
} else
|
||||||
l.append(kar);
|
l.append(kar);
|
||||||
}
|
}
|
||||||
|
@ -1764,9 +1766,10 @@ public class HtmlHelper {
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
|
// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
|
||||||
NodeTraversor.traverse(new NodeVisitor() {
|
NodeTraversor.traverse(new NodeVisitor() {
|
||||||
private Element element;
|
private Element element;
|
||||||
|
private int plain = 0;
|
||||||
private List<TextNode> block = new ArrayList<>();
|
private List<TextNode> block = new ArrayList<>();
|
||||||
|
|
||||||
private String WHITESPACE = " \t\f";
|
private String WHITESPACE = " \t\f\u00A0";
|
||||||
private String WHITESPACE_NL = WHITESPACE + "\r\n";
|
private String WHITESPACE_NL = WHITESPACE + "\r\n";
|
||||||
private Pattern TRIM_WHITESPACE_NL =
|
private Pattern TRIM_WHITESPACE_NL =
|
||||||
Pattern.compile("[" + WHITESPACE + "]*\\r?\\n[" + WHITESPACE + "]*");
|
Pattern.compile("[" + WHITESPACE + "]*\\r?\\n[" + WHITESPACE + "]*");
|
||||||
|
@ -1781,10 +1784,13 @@ public class HtmlHelper {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void head(Node node, int depth) {
|
public void head(Node node, int depth) {
|
||||||
if (node instanceof TextNode)
|
if (node instanceof TextNode) {
|
||||||
block.add((TextNode) node);
|
if (plain == 0)
|
||||||
else if (node instanceof Element) {
|
block.add((TextNode) node);
|
||||||
|
} else if (node instanceof Element) {
|
||||||
element = (Element) node;
|
element = (Element) node;
|
||||||
|
if ("true".equals(element.attr("plain")))
|
||||||
|
plain++;
|
||||||
if (BLOCK_START.contains(element.tagName())) {
|
if (BLOCK_START.contains(element.tagName())) {
|
||||||
normalizeText(block);
|
normalizeText(block);
|
||||||
block.clear();
|
block.clear();
|
||||||
|
@ -1796,6 +1802,8 @@ public class HtmlHelper {
|
||||||
public void tail(Node node, int depth) {
|
public void tail(Node node, int depth) {
|
||||||
if (node instanceof Element) {
|
if (node instanceof Element) {
|
||||||
element = (Element) node;
|
element = (Element) node;
|
||||||
|
if ("true".equals(element.attr("plain")))
|
||||||
|
plain--;
|
||||||
if (BLOCK_END.contains(element.tagName())) {
|
if (BLOCK_END.contains(element.tagName())) {
|
||||||
normalizeText(block);
|
normalizeText(block);
|
||||||
block.clear();
|
block.clear();
|
||||||
|
|
|
@ -1591,7 +1591,7 @@ public class MessageHelper {
|
||||||
if (part.isMimeType("text/plain")) {
|
if (part.isMimeType("text/plain")) {
|
||||||
if ("flowed".equalsIgnoreCase(ct.getParameter("format")))
|
if ("flowed".equalsIgnoreCase(ct.getParameter("format")))
|
||||||
result = HtmlHelper.flow(result);
|
result = HtmlHelper.flow(result);
|
||||||
result = "<div>" + HtmlHelper.formatPre(result) + "</div>";
|
result = "<div plain=\"true\">" + HtmlHelper.formatPre(result) + "</div>";
|
||||||
} else if (part.isMimeType("text/html")) {
|
} else if (part.isMimeType("text/html")) {
|
||||||
if (TextUtils.isEmpty(charset)) {
|
if (TextUtils.isEmpty(charset)) {
|
||||||
// <meta charset="utf-8" />
|
// <meta charset="utf-8" />
|
||||||
|
|
Loading…
Reference in New Issue