From ab293cc189f91330e3485bbb4c0ec1981c23f430 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Thu, 23 May 2024 20:42:23 -0500 Subject: [PATCH] Hide single-char sigils while composing --- .../siacs/conversations/utils/StylingHelper.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/utils/StylingHelper.java b/src/main/java/eu/siacs/conversations/utils/StylingHelper.java index 1dc1c268f69ebbf330e4b7ad6835ce4a5a131451..6b0d98d9f1e2cd3c71ff79ba00fed2c13d2b4e3b 100644 --- a/src/main/java/eu/siacs/conversations/utils/StylingHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/StylingHelper.java @@ -72,7 +72,8 @@ public class StylingHelper { StyleSpan.class, StrikethroughSpan.class, TypefaceSpan.class, - ForegroundColorSpan.class + ForegroundColorSpan.class, + RelativeSizeSpan.class ); public static void clear(final Editable editable) { @@ -201,7 +202,15 @@ public class StylingHelper { QuoteSpan[] quoteSpans = editable.getSpans(start, end, QuoteSpan.class); @ColorInt int textColor = quoteSpans.length > 0 ? quoteSpans[0].getColor() : fallbackTextColor; @ColorInt int keywordColor = transformColor(textColor); - editable.setSpan(new ForegroundColorSpan(keywordColor), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | (composing ? XHTML_REMOVE << Spanned.SPAN_USER_SHIFT : 0)); + if (composing) { + if (end-start > 1) { + editable.setSpan(new ForegroundColorSpan(keywordColor), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | XHTML_REMOVE << Spanned.SPAN_USER_SHIFT); + } else { + editable.setSpan(new RelativeSizeSpan(0), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | XHTML_REMOVE << Spanned.SPAN_USER_SHIFT); + } + } else { + editable.setSpan(new ForegroundColorSpan(keywordColor), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } } private static @@ -257,9 +266,6 @@ public class StylingHelper { for (final var span : editable.getSpans(0, editable.length() - 1, QuoteSpan.class)) { editable.removeSpan(span); } - for (final var span : editable.getSpans(0, editable.length() - 1, RelativeSizeSpan.class)) { - editable.removeSpan(span); - } format(editable, mEditText.getCurrentTextColor(), true); mAdapter.handleTextQuotes(mEditText, editable, false); }