diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 71947e6609..73d6e0637b 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -28,6 +28,7 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; import android.text.Html; +import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; @@ -477,12 +478,6 @@ public class HtmlHelper { String style = null; String clazz = element.attr("class"); - // Workaround TextView not supporting nested colors - List parents = element.parents(); - Collections.reverse(parents); - for (Element parent : parents) - style = mergeStyles(style, parent.attr("style"), "color"); - // Class style style = processStyles(element.tagName(), clazz, style, sheets); @@ -1766,7 +1761,7 @@ public class HtmlHelper { if (i != spanned.length()) spanned = (Spanned) spanned.subSequence(0, i); - return spanned; + return reverseSpans(spanned); } static String toHtml(Spanned spanned) { @@ -1793,4 +1788,17 @@ public class HtmlHelper { return doc.html(); } + + static Spanned reverseSpans(Spanned spanned) { + Object[] spans = spanned.getSpans(0, spanned.length(), Object.class); + Spannable reverse = Spannable.Factory.getInstance().newSpannable(spanned.toString()); + if (spans != null && spans.length > 0) + for (int i = spans.length - 1; i >= 0; --i) + reverse.setSpan( + spans[i], + spanned.getSpanStart(spans[i]), + spanned.getSpanEnd(spans[i]), + spanned.getSpanFlags(spans[i])); + return reverse; + } }