Revert "Clear formatting when pasting text."

This reverts commit 77be721f5a.

If pasting an image will crash the application, does not handle pasting
via multiple other methods like quick suggestion or via a clipboard
manager like provided by Samsung via their keyboard.
main
Cody Henthorne 2022-12-06 13:38:31 -05:00
rodzic 1764b21214
commit 3c2c6d782a
1 zmienionych plików z 0 dodań i 49 usunięć

Wyświetl plik

@ -4,12 +4,7 @@ import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.text.InputFilter;
import android.text.Spannable;
import android.text.SpannableString;
import android.util.AttributeSet;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.text.Spanned;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -17,15 +12,11 @@ import androidx.appcompat.widget.AppCompatEditText;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.emoji.EmojiProvider.EmojiDrawable;
import org.thoughtcrime.securesms.components.mention.MentionAnnotation;
import org.thoughtcrime.securesms.database.model.Mention;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.util.EditTextExtensionsKt;
import org.thoughtcrime.securesms.util.ServiceUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@ -104,44 +95,4 @@ public class EmojiEditText extends AppCompatEditText {
return result;
}
@Override
public boolean onTextContextMenuItem(int id) {
if (id == android.R.id.paste) {
ClipboardManager clipboardManager = ServiceUtil.getClipboardManager(getContext());
ClipData originalClipData = clipboardManager.getPrimaryClip();
CharSequence pendingPaste = getTextFromClipData(originalClipData);
if (pendingPaste == null) {
return super.onTextContextMenuItem(id);
}
CharSequence sanitizedText = (pendingPaste instanceof Spanned) ? clearFormattingFromText(pendingPaste)
: pendingPaste;
clipboardManager.setPrimaryClip(ClipData.newPlainText("signal_sanitized", sanitizedText));
boolean performedAction = super.onTextContextMenuItem(id);
clipboardManager.setPrimaryClip(originalClipData);
return performedAction;
}
return super.onTextContextMenuItem(id);
}
private CharSequence clearFormattingFromText(CharSequence text) {
List<Mention> mentions = MentionAnnotation.getMentionsFromAnnotations(text);
Spannable withoutFormatting = new SpannableString(text.toString());
MentionAnnotation.setMentionAnnotations(withoutFormatting, mentions);
return withoutFormatting;
}
private @Nullable CharSequence getTextFromClipData(ClipData data) {
if (data != null && data.getItemCount() > 0) {
return data.getItemAt(0).coerceToText(getContext());
} else {
return null;
}
}
}