Preserve maxLength for EmojiEditText

Addresses #3388
Closes #5649
// FREEBIE
This commit is contained in:
FeuRenard 2016-08-31 01:48:40 +02:00 committed by Moxie Marlinspike
parent 24c99c322c
commit 85ea7e1bf4

View file

@ -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;
}
}