diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java b/src/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java index e9f032b9a..9b513da56 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; + } }