Loading core/java/android/inputmethodservice/ExtractEditText.java +2 −2 Original line number Diff line number Diff line Loading @@ -105,8 +105,8 @@ public class ExtractEditText extends EditText { @Override public boolean onTextContextMenuItem(int id) { if (mIME != null && mIME.onExtractTextContextMenuItem(id)) { // Mode was started on Extracted, needs to be stopped here. // Cut and paste will change the text, which stops selection mode. if (id == android.R.id.copy) stopTextActionMode(); // Cut will change the text, which stops selection mode. if (id == android.R.id.copy || id == android.R.id.paste) stopTextActionMode(); return true; } return super.onTextContextMenuItem(id); Loading core/java/android/widget/TextView.java +20 −9 Original line number Diff line number Diff line Loading @@ -6347,19 +6347,30 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (text.text != null) { if (content == null) { setText(text.text, TextView.BufferType.EDITABLE); } else if (text.partialStartOffset < 0) { removeParcelableSpans(content, 0, content.length()); content.replace(0, content.length(), text.text); } else { int start = 0; int end = content.length(); if (text.partialStartOffset >= 0) { final int N = content.length(); int start = text.partialStartOffset; start = text.partialStartOffset; if (start > N) start = N; int end = text.partialEndOffset; end = text.partialEndOffset; if (end > N) end = N; } removeParcelableSpans(content, start, end); if (TextUtils.equals(content.subSequence(start, end), text.text)) { if (text.text instanceof Spanned) { // OK to copy spans only. TextUtils.copySpansFrom((Spanned) text.text, start, end, Object.class, content, start); } } else { content.replace(start, end, text.text); } } } // Now set the selection position... make sure it is in range, to // avoid crashes. If this is a partial update, it is possible that Loading Loading
core/java/android/inputmethodservice/ExtractEditText.java +2 −2 Original line number Diff line number Diff line Loading @@ -105,8 +105,8 @@ public class ExtractEditText extends EditText { @Override public boolean onTextContextMenuItem(int id) { if (mIME != null && mIME.onExtractTextContextMenuItem(id)) { // Mode was started on Extracted, needs to be stopped here. // Cut and paste will change the text, which stops selection mode. if (id == android.R.id.copy) stopTextActionMode(); // Cut will change the text, which stops selection mode. if (id == android.R.id.copy || id == android.R.id.paste) stopTextActionMode(); return true; } return super.onTextContextMenuItem(id); Loading
core/java/android/widget/TextView.java +20 −9 Original line number Diff line number Diff line Loading @@ -6347,19 +6347,30 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (text.text != null) { if (content == null) { setText(text.text, TextView.BufferType.EDITABLE); } else if (text.partialStartOffset < 0) { removeParcelableSpans(content, 0, content.length()); content.replace(0, content.length(), text.text); } else { int start = 0; int end = content.length(); if (text.partialStartOffset >= 0) { final int N = content.length(); int start = text.partialStartOffset; start = text.partialStartOffset; if (start > N) start = N; int end = text.partialEndOffset; end = text.partialEndOffset; if (end > N) end = N; } removeParcelableSpans(content, start, end); if (TextUtils.equals(content.subSequence(start, end), text.text)) { if (text.text instanceof Spanned) { // OK to copy spans only. TextUtils.copySpansFrom((Spanned) text.text, start, end, Object.class, content, start); } } else { content.replace(start, end, text.text); } } } // Now set the selection position... make sure it is in range, to // avoid crashes. If this is a partial update, it is possible that Loading