diff options
author | Andrei Stingaceanu <stg@google.com> | 2015-07-14 10:14:22 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-14 10:14:22 +0000 |
commit | 0e6360f4542f266a2f1d7ba9fb802bffa6001b9b (patch) | |
tree | 9ca00a2e8c515ed46c6f06294c00ec336639674a | |
parent | 68bc390c0ab592b86b93e153fcc0c0dd51545e44 (diff) | |
parent | a9b9907f3c472e70d0950964d3e2c83c4926af14 (diff) | |
download | frameworks_base-0e6360f4542f266a2f1d7ba9fb802bffa6001b9b.zip frameworks_base-0e6360f4542f266a2f1d7ba9fb802bffa6001b9b.tar.gz frameworks_base-0e6360f4542f266a2f1d7ba9fb802bffa6001b9b.tar.bz2 |
am a9b9907f: Merge "Fix insertion handle disappearing in extract mode" into mnc-dev
* commit 'a9b9907f3c472e70d0950964d3e2c83c4926af14':
Fix insertion handle disappearing in extract mode
-rw-r--r-- | core/java/android/inputmethodservice/ExtractEditText.java | 4 | ||||
-rw-r--r-- | core/java/android/widget/TextView.java | 29 |
2 files changed, 22 insertions, 11 deletions
diff --git a/core/java/android/inputmethodservice/ExtractEditText.java b/core/java/android/inputmethodservice/ExtractEditText.java index 8bc2876..24596c3 100644 --- a/core/java/android/inputmethodservice/ExtractEditText.java +++ b/core/java/android/inputmethodservice/ExtractEditText.java @@ -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); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 42ac599..131ba46 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -6347,17 +6347,28 @@ 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 { - final int N = content.length(); - int start = text.partialStartOffset; - if (start > N) start = N; - int end = text.partialEndOffset; - if (end > N) end = N; + int start = 0; + int end = content.length(); + + if (text.partialStartOffset >= 0) { + final int N = content.length(); + start = text.partialStartOffset; + if (start > N) start = N; + end = text.partialEndOffset; + if (end > N) end = N; + } + removeParcelableSpans(content, start, end); - content.replace(start, end, text.text); + 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); + } } } |