Added paste as plain text

This commit is contained in:
M66B 2022-07-04 18:12:37 +02:00
parent 3468ff7c45
commit 56e8c6111a
2 changed files with 32 additions and 1 deletions

View File

@ -34,6 +34,7 @@ import android.os.Parcelable;
import android.text.Editable;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.QuoteSpan;
import android.text.style.StyleSpan;
import android.util.AttributeSet;
@ -110,6 +111,8 @@ public class EditTextCompose extends FixedEditText {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
try {
int order = 1000;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
menu.add(Menu.CATEGORY_SECONDARY, android.R.id.pasteAsPlainText, order++, getTitle(R.string.title_paste_plain));
if (undo_manager && can(android.R.id.undo))
menu.add(Menu.CATEGORY_SECONDARY, R.string.title_undo, order++, getTitle(R.string.title_undo));
if (undo_manager && can(android.R.id.redo))
@ -142,7 +145,9 @@ public class EditTextCompose extends FixedEditText {
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (item.getGroupId() == Menu.CATEGORY_SECONDARY) {
int id = item.getItemId();
if (id == R.string.title_undo)
if (id == android.R.id.pasteAsPlainText)
return insertPlain();
else if (id == R.string.title_undo)
return EditTextCompose.super.onTextContextMenuItem(android.R.id.undo);
else if (id == R.string.title_redo)
return EditTextCompose.super.onTextContextMenuItem(android.R.id.redo);
@ -163,6 +168,31 @@ public class EditTextCompose extends FixedEditText {
// Do nothing
}
private boolean insertPlain() {
ClipboardManager cbm = Helper.getSystemService(context, ClipboardManager.class);
if (!cbm.hasPrimaryClip())
return true;
ClipData clip = cbm.getPrimaryClip();
if (clip == null || clip.getItemCount() < 1)
return true;
ClipData.Item item = clip.getItemAt(0);
if (item == null)
return true;
CharSequence text = item.getText();
if (TextUtils.isEmpty(text))
return true;
int start = getSelectionStart();
if (start < 0)
start = 0;
getText().insert(start, text.toString());
return true;
}
private boolean insertLine() {
try {
int start = getSelectionStart();

View File

@ -1876,6 +1876,7 @@
<string name="title_yes">Yes</string>
<string name="title_no">No</string>
<string name="title_later">Later</string>
<string name="title_paste_plain">Paste as plain text</string>
<string name="title_undo">Undo</string>
<string name="title_redo">Redo</string>
<string name="title_insert_line">Insert line</string>