diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 4f0d1b3177..e006618261 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -141,6 +141,7 @@ import org.jsoup.select.NodeFilter; import org.openintents.openpgp.OpenPgpError; import org.openintents.openpgp.util.OpenPgpApi; import org.openintents.openpgp.util.OpenPgpServiceConnection; +import org.w3c.dom.css.CSSStyleSheet; import java.io.BufferedOutputStream; import java.io.File; @@ -3567,8 +3568,19 @@ public class FragmentCompose extends FragmentBase { d.body().appendChild(div); } - // Quote referenced message body Element e = d.body(); + + // Apply styles + List sheets = HtmlHelper.parseStyles(d.head().select("style")); + for (Element element : e.select("*")) { + String tag = element.tagName(); + String clazz = element.attr("class"); + String style = HtmlHelper.processStyles(tag, clazz, null, sheets); + style = HtmlHelper.mergeStyles(style, element.attr("style")); + element.attr("style", style); + } + + // Quote referenced message body boolean quote_reply = prefs.getBoolean("quote_reply", true); boolean quote = (quote_reply && ("reply".equals(action) || "reply_all".equals(action) || "list".equals(action))); diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 6dadc17167..bdc2a3fcc5 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -485,11 +485,10 @@ public class HtmlHelper { // Sanitize styles for (Element element : document.select("*")) { - String style = null; - String clazz = element.attr("class"); - // Class style - style = processStyles(element.tagName(), clazz, style, sheets); + String tag = element.tagName(); + String clazz = element.attr("class"); + String style = processStyles(tag, clazz, null, sheets); // Element style style = mergeStyles(style, element.attr("style")); @@ -1027,7 +1026,7 @@ public class HtmlHelper { return sheets; } - private static String processStyles(String tag, String clazz, String style, List sheets) { + static String processStyles(String tag, String clazz, String style, List sheets) { for (CSSStyleSheet sheet : sheets) if (isScreenMedia(sheet.getMedia())) { style = processStyles(null, clazz, style, sheet.getCssRules(), Selector.SAC_ELEMENT_NODE_SELECTOR); @@ -1093,7 +1092,7 @@ public class HtmlHelper { return false; } - private static String mergeStyles(String base, String style) { + static String mergeStyles(String base, String style) { return mergeStyles(base, style, null); }