From 85ea7e1bf49a0e1e5aac35809aa90cb17391f745 Mon Sep 17 00:00:00 2001 From: FeuRenard Date: Wed, 31 Aug 2016 01:48:40 +0200 Subject: [PATCH] Preserve maxLength for EmojiEditText Addresses #3388 Closes #5649 // FREEBIE --- .../components/emoji/EmojiEditText.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java b/src/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java index e9f032b9ad..9b513da565 100644 --- a/src/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java +++ b/src/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.components.emoji; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v7.widget.AppCompatEditText; import android.text.InputFilter; import android.util.AttributeSet; @@ -26,7 +27,7 @@ public class EmojiEditText extends AppCompatEditText { public EmojiEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); if (!TextSecurePreferences.isSystemEmojiPreferred(getContext())) { - setFilters(new InputFilter[]{ new EmojiFilter(this) }); + setFilters(appendEmojiFilter(this.getFilters())); } } @@ -38,8 +39,24 @@ public class EmojiEditText extends AppCompatEditText { setSelection(start + emoji.length()); } - @Override public void invalidateDrawable(@NonNull Drawable drawable) { + @Override + public void invalidateDrawable(@NonNull Drawable drawable) { if (drawable instanceof EmojiDrawable) invalidate(); else super.invalidateDrawable(drawable); } + + private InputFilter[] appendEmojiFilter(@Nullable InputFilter[] originalFilters) { + InputFilter[] result; + + if (originalFilters != null) { + result = new InputFilter[originalFilters.length + 1]; + System.arraycopy(originalFilters, 0, result, 1, originalFilters.length); + } else { + result = new InputFilter[1]; + } + + result[0] = new EmojiFilter(this); + + return result; + } }