From dc814cffb9a8b46a2f00aa9ee6f5ef3091fd457a Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 18 Jan 2023 22:29:37 +0100 Subject: [PATCH] Check for pasting raw HTML --- .../java/eu/faircode/email/EditTextCompose.java | 13 ++++++++++--- app/src/main/java/eu/faircode/email/HtmlHelper.java | 6 ++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EditTextCompose.java b/app/src/main/java/eu/faircode/email/EditTextCompose.java index 5bc7f18df3..da70320c84 100644 --- a/app/src/main/java/eu/faircode/email/EditTextCompose.java +++ b/app/src/main/java/eu/faircode/email/EditTextCompose.java @@ -484,7 +484,14 @@ public class EditTextCompose extends FixedEditText { ClipData.Item item = cbm.getPrimaryClip().getItemAt(0); final String html; - String h = item.getHtmlText(); + String h = null; + if (raw) { + CharSequence text = item.getText(); + if (text != null && HtmlHelper.isHtml(text.toString())) + h = text.toString(); + } + if (h == null) + h = item.getHtmlText(); if (h == null) { CharSequence text = item.getText(); if (text == null) @@ -497,9 +504,9 @@ public class EditTextCompose extends FixedEditText { @Override public void run() { try { - SpannableStringBuilder ssb = (raw) + SpannableStringBuilder ssb = (raw ? new SpannableStringBuilderEx(html) - : getSpanned(context, html); + : getSpanned(context, html)); EditTextCompose.this.post(new Runnable() { @Override diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 5459eb8c0a..8c3dd8c269 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -3829,6 +3829,12 @@ public class HtmlHelper { .remove("x-keep-line"); } + static boolean isHtml(String text) { + Pattern p = Pattern.compile(".*\\<[^>]+>.*", Pattern.DOTALL); + boolean isHtml = p.matcher(text).matches(); + return isHtml; + } + static Spanned fromHtml(@NonNull String html, Context context) { Document document = JsoupEx.parse(html); return fromDocument(context, document, null, null);