From 0303fbea87b69a69ee18515a7974d357a94d5e2d Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 9 Nov 2020 22:42:09 +0100 Subject: [PATCH] Added table image merger --- .../java/eu/faircode/email/HtmlHelper.java | 26 +++++++++++++++++-- 1 file changed, 24 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 3bbdd2d5b4..05e8511549 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -840,7 +840,27 @@ public class HtmlHelper { for (Element row : table.children()) { row.tagName("div"); + List merge = new ArrayList<>(); for (Element col : row.children()) { + Element next = col.nextElementSibling(); + if (col.childNodeSize() == 1) { + Node lonely = col.childNode(0); + if (lonely instanceof Element && + "img".equals(lonely.nodeName())) { + lonely.remove(); + lonely.removeAttr("x-block"); + merge.add(lonely); + if (next != null) + continue; + } + } + + if (merge.size() > 0) { + for (int m = merge.size() - 1; m >= 0; m--) + col.prependChild(merge.get(m)); + merge.clear(); + } + if ("th".equals(col.tagName())) { Element strong = new Element("strong"); for (Node child : new ArrayList<>(col.childNodes())) { @@ -856,11 +876,13 @@ public class HtmlHelper { "start".equals(align)) col.tagName("div").removeAttr("x-block"); - if (col.childNodeSize() > 0 && - col.nextElementSibling() != null) + if (next != null && col.childNodeSize() > 0) col.appendText("\u2002"); // ensp } + if (merge.size() != 0) + throw new AssertionError("merge"); + if (text_separators && view) row.appendElement("hr") .attr("x-block", "true")