From ca23ea37bf8447b4c53461834eca8ee444cc2ca5 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 21 Apr 2020 20:29:58 +0200 Subject: [PATCH] Inherit colors --- .../main/java/eu/faircode/email/HtmlHelper.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 2089ba5c74..248612f9a7 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -467,7 +467,15 @@ public class HtmlHelper { // Sanitize styles for (Element element : document.select("*")) { String clazz = element.attr("class"); - String style = element.attr("style"); + + // This is to workaround a TextView bug + List parents = element.parents(); + Collections.reverse(parents); + String style = null; + for (Element parent : parents) + style = mergeStyles(style, parent.attr("style"), "color"); + + style = mergeStyles(style, element.attr("style")); // Process class if (!TextUtils.isEmpty(clazz)) @@ -989,6 +997,10 @@ public class HtmlHelper { } private static String mergeStyles(String base, String style) { + return mergeStyles(base, style, null); + } + + private static String mergeStyles(String base, String style, String selector) { Map result = new HashMap<>(); List params = new ArrayList<>(); @@ -1001,7 +1013,8 @@ public class HtmlHelper { int colon = param.indexOf(':'); if (colon > 0) { String key = param.substring(0, colon).trim().toLowerCase(Locale.ROOT); - result.put(key, param); + if (selector == null || selector.equals(key)) + result.put(key, param); } else Log.w("Invalid style param=" + param); }