From cdbad10c70acc3fad99a6283086ea4b751e5fbf1 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sat, 29 Oct 2022 21:43:40 -0500 Subject: [PATCH] Replace HTML QuoteSpan with ours --- .../ui/adapter/MessageAdapter.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 7b57c0dc2..5c181f4ee 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -363,12 +363,22 @@ public class MessageAdapter extends ArrayAdapter { private void applyQuoteSpan(SpannableStringBuilder body, int start, int end, boolean darkBackground) { if (start > 1 && !"\n\n".equals(body.subSequence(start - 2, start).toString())) { body.insert(start++, "\n"); - body.setSpan(new DividerSpan(false), start - 2, start, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + body.setSpan( + new DividerSpan(false), + start - ("\n".equals(body.subSequence(start - 2, start - 1).toString()) ? 2 : 1), + start, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ); end++; } if (end < body.length() - 1 && !"\n\n".equals(body.subSequence(end, end + 2).toString())) { body.insert(end, "\n"); - body.setSpan(new DividerSpan(false), end, end + 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + body.setSpan( + new DividerSpan(false), + end, + end + ("\n".equals(body.subSequence(end + 1, end + 2).toString()) ? 2 : 1), + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ); } int color = darkBackground ? this.getMessageTextColor(darkBackground, false) : ContextCompat.getColor(activity, R.color.green700_desaturated); @@ -489,6 +499,12 @@ public class MessageAdapter extends ArrayAdapter { int end = body.getSpanEnd(mergeSeparator); body.setSpan(new DividerSpan(true), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } + for (final android.text.style.QuoteSpan quote : body.getSpans(0, body.length(), android.text.style.QuoteSpan.class)) { + int start = body.getSpanStart(quote); + int end = body.getSpanEnd(quote); + body.removeSpan(quote); + applyQuoteSpan(body, start, end, darkBackground); + } boolean startsWithQuote = handleTextQuotes(body, darkBackground); if (!message.isPrivateMessage()) { if (hasMeCommand) { -- 2.38.5