From c43fe44e3e2e3e231fa8d56e4aa29830cbccdcff Mon Sep 17 00:00:00 2001 From: Lucio Maciel Date: Thu, 16 Sep 2021 10:20:00 -0300 Subject: [PATCH] Fix transformation method issues. --- .../components/emoji/EmojiTextView.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java index 7134d55e90..7402da3d50 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java @@ -11,6 +11,7 @@ import android.text.Spanned; import android.text.TextDirectionHeuristic; import android.text.TextDirectionHeuristics; import android.text.TextUtils; +import android.text.method.TransformationMethod; import android.util.AttributeSet; import android.util.TypedValue; import android.view.ViewGroup; @@ -42,6 +43,7 @@ public class EmojiTextView extends AppCompatTextView { private boolean forceCustom; private CharSequence previousText; private BufferType previousBufferType; + private TransformationMethod previousTransformationMethod; private float originalFontSize; private boolean useSystemEmoji; private boolean sizeChangeInProgress; @@ -124,10 +126,11 @@ public class EmojiTextView extends AppCompatTextView { return; } - previousText = text; - previousOverflowText = overflowText; - previousBufferType = type; - useSystemEmoji = useSystemEmoji(); + previousText = text; + previousOverflowText = overflowText; + previousBufferType = type; + useSystemEmoji = useSystemEmoji(); + previousTransformationMethod = getTransformationMethod(); if (useSystemEmoji || candidates == null || candidates.size() == 0) { super.setText(new SpannableStringBuilder(Optional.fromNullable(text).or("")), BufferType.NORMAL); @@ -158,9 +161,11 @@ public class EmojiTextView extends AppCompatTextView { lastLineWidth = -1; } else { Layout layout = getLayout(); - int lines = layout.getLineCount(); - int start = layout.getLineStart(lines - 1); - int count = text.length() - start; + text = layout.getText(); + + int lines = layout.getLineCount(); + int start = layout.getLineStart(lines - 1); + int count = text.length() - start; if ((getLayoutDirection() == LAYOUT_DIRECTION_LTR && textDirection.isRtl(text, start, count)) || (getLayoutDirection() == LAYOUT_DIRECTION_RTL && !textDirection.isRtl(text, start, count))) { @@ -260,7 +265,8 @@ public class EmojiTextView extends AppCompatTextView { Util.equals(previousOverflowText, overflowText) && Util.equals(previousBufferType, bufferType) && useSystemEmoji == useSystemEmoji() && - !sizeChangeInProgress; + !sizeChangeInProgress && + previousTransformationMethod != getTransformationMethod(); } private boolean useSystemEmoji() {