From d01a52c5a81fc80c508df1cda44f8a80aeab036c Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 1 Oct 2021 12:29:46 -0400 Subject: [PATCH] Fix truncation calculation by accounting for compound drawables. --- .../securesms/components/emoji/SimpleEmojiTextView.kt | 6 +++++- app/src/main/res/layout/conversation_title_view.xml | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt index 9dd7d73ef..df51cbdf7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt @@ -21,10 +21,14 @@ open class SimpleEmojiTextView @JvmOverloads constructor( if (SignalStore.settings().isPreferSystemEmoji || candidates == null || candidates.size() == 0) { super.setText(Optional.fromNullable(text).or(""), type) } else { + val startDrawableSize: Int = compoundDrawables[0]?.let { it.intrinsicWidth + compoundDrawablePadding } ?: 0 + val endDrawableSize: Int = compoundDrawables[1]?.let { it.intrinsicWidth + compoundDrawablePadding } ?: 0 + val adjustedWidth: Int = width - startDrawableSize - endDrawableSize + val newContent = if (width == 0 || maxLines == -1) { text } else { - TextUtils.ellipsize(text, paint, (width * maxLines).toFloat(), TextUtils.TruncateAt.END, false, null) + TextUtils.ellipsize(text, paint, (adjustedWidth * maxLines).toFloat(), TextUtils.TruncateAt.END, false, null) } val newCandidates = if (isInEditMode) null else EmojiProvider.getCandidates(newContent) diff --git a/app/src/main/res/layout/conversation_title_view.xml b/app/src/main/res/layout/conversation_title_view.xml index 261fbc9e5..76d4abbfc 100644 --- a/app/src/main/res/layout/conversation_title_view.xml +++ b/app/src/main/res/layout/conversation_title_view.xml @@ -52,7 +52,7 @@ android:layout_toEndOf="@id/contact_photo_container" android:orientation="vertical"> -