aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/ui/EditMessage.java
diff options
context:
space:
mode:
authorMishiranu <fukurou.mishiranu@gmail.com>2016-10-19 20:43:30 +0300
committerMishiranu <fukurou.mishiranu@gmail.com>2016-10-19 20:47:41 +0300
commit8835f08cf7b48c87cfd0644160e1264ff4eb2242 (patch)
tree27200106f8c64c44e53f4c793c35320e4e7ea7ca /src/main/java/eu/siacs/conversations/ui/EditMessage.java
parent7226fc0010b4b35591930793c2e56174d5d4c193 (diff)
Remove spans on copying or pasting a text
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui/EditMessage.java')
-rw-r--r--src/main/java/eu/siacs/conversations/ui/EditMessage.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/EditMessage.java b/src/main/java/eu/siacs/conversations/ui/EditMessage.java
index e3841d1d..e609d08e 100644
--- a/src/main/java/eu/siacs/conversations/ui/EditMessage.java
+++ b/src/main/java/eu/siacs/conversations/ui/EditMessage.java
@@ -1,7 +1,11 @@
package eu.siacs.conversations.ui;
import android.content.Context;
+import android.os.Build;
import android.os.Handler;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.text.Spanned;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.EditText;
@@ -89,4 +93,36 @@ public class EditMessage extends EditText {
boolean onTabPressed(boolean repeated);
}
+ private static final InputFilter SPAN_FILTER = new InputFilter() {
+
+ @Override
+ public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
+ return source instanceof Spanned ? source.toString() : source;
+ }
+ };
+
+ @Override
+ public boolean onTextContextMenuItem(int id) {
+ if (id == android.R.id.paste) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ return super.onTextContextMenuItem(android.R.id.pasteAsPlainText);
+ } else {
+ Editable editable = getEditableText();
+ InputFilter[] filters = editable.getFilters();
+ InputFilter[] tempFilters = new InputFilter[filters != null ? filters.length + 1 : 1];
+ if (filters != null) {
+ System.arraycopy(filters, 0, tempFilters, 1, filters.length);
+ }
+ tempFilters[0] = SPAN_FILTER;
+ editable.setFilters(tempFilters);
+ try {
+ return super.onTextContextMenuItem(id);
+ } finally {
+ editable.setFilters(filters);
+ }
+ }
+ } else {
+ return super.onTextContextMenuItem(id);
+ }
+ }
}