diff options
| author | Keisuke Kuroyanagi <ksk@google.com> | 2016-04-01 15:00:53 +0900 |
|---|---|---|
| committer | Keisuke Kuroyanagi <ksk@google.com> | 2016-04-01 15:00:53 +0900 |
| commit | 183fd5071ea84aab82209c827fa0e4ff84a6b590 (patch) | |
| tree | 4933ff3071314afa4566a26884f894e755300c26 /core/java | |
| parent | d9435ea0514d70923a8e7ba51ee677aa4e0d36ba (diff) | |
Make hasTransientState be true only if user created selection is active.
Previously, hasTransientState returned true even when TextView has a
selection that hasn't been created by the user. This unnecessarily
prevents the TextView from being recycled.
This issue was introduced by Ib454b0fbbc2c2f8d198, which fixes that
setHasTransientState(true) is not always coupled with
setHasTransientState(false).
With this CL:
hasTransientState will get true when selection action mode is started.
hasTransientState will get false when selection is removed.
Note that hasTransientState intentionally continues to be true when
selection action mode is terminated with preserving selection.
Bug: 27913323
Change-Id: I960ddfd7221caeb676c23926af06a8a415dec288
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/widget/Editor.java | 3 | ||||
| -rw-r--r-- | core/java/android/widget/TextView.java | 10 |
2 files changed, 7 insertions, 6 deletions
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index 59d857c35afe..47b034886ad8 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -3640,6 +3640,9 @@ public class Editor { } if (menu.hasVisibleItems() || mode.getCustomView() != null) { + if (mHasSelection && !mTextView.hasTransientState()) { + mTextView.setHasTransientState(true); + } return true; } else { return false; diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 31950970219f..cf3da7bf1bd6 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -8294,14 +8294,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener newSelEnd = Selection.getSelectionEnd(buf); } - if (newSelStart == newSelEnd && hasTransientState()) { - setHasTransientState(false); - } else if (newSelStart != newSelEnd && !hasTransientState()) { - setHasTransientState(true); - } - if (mEditor != null) { mEditor.refreshTextActionMode(); + if (!hasSelection() && mEditor.mTextActionMode == null && hasTransientState()) { + // User generated selection has been removed. + setHasTransientState(false); + } } onSelectionChanged(newSelStart, newSelEnd); } |
