diff options
| -rw-r--r-- | core/java/android/text/method/ArrowKeyMovementMethod.java | 20 | ||||
| -rw-r--r-- | core/java/android/widget/TextView.java | 10 |
2 files changed, 10 insertions, 20 deletions
diff --git a/core/java/android/text/method/ArrowKeyMovementMethod.java b/core/java/android/text/method/ArrowKeyMovementMethod.java index baaf39d..3fe14f9 100644 --- a/core/java/android/text/method/ArrowKeyMovementMethod.java +++ b/core/java/android/text/method/ArrowKeyMovementMethod.java @@ -319,25 +319,9 @@ public class ArrowKeyMovementMethod implements MovementMethod { public void onTakeFocus(TextView view, Spannable text, int dir) { if ((dir & (View.FOCUS_FORWARD | View.FOCUS_DOWN)) != 0) { - Layout layout = view.getLayout(); - - if (layout == null) { - /* - * This shouldn't be null, but do something sensible if it is. - */ + if (view.getLayout() == null) { + // This shouldn't be null, but do something sensible if it is. Selection.setSelection(text, text.length()); - } else { - /* - * Put the cursor at the end of the first line, which is - * either the last offset if there is only one line, or the - * offset before the first character of the second line - * if there is more than one line. - */ - if (layout.getLineCount() == 1) { - Selection.setSelection(text, text.length()); - } else { - Selection.setSelection(text, layout.getLineStart(1) - 1); - } } } else { Selection.setSelection(text, text.length()); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 054bfaf..28234bf 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -6469,6 +6469,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (!mFrozenWithFocus || (selStart < 0 || selEnd < 0)) { boolean selMoved = mSelectionMoved; + final int touchOffset = + ((SelectionModifierCursorController) mSelectionModifierCursorController). + getMinTouchOffset(); + Selection.setSelection((Spannable) mText, touchOffset); + if (mMovement != null) { mMovement.onTakeFocus(this, (Spannable) mText, direction); } @@ -6680,13 +6685,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (isTextEditable()) { if (action == MotionEvent.ACTION_UP && isFocused() && !mScrolled) { InputMethodManager imm = (InputMethodManager) - getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + getContext().getSystemService(Context.INPUT_METHOD_SERVICE); final int newSelStart = getSelectionStart(); final int newSelEnd = getSelectionEnd(); CommitSelectionReceiver csr = null; - if (newSelStart != oldSelStart || newSelEnd != oldSelEnd) { + if (newSelStart != oldSelStart || newSelEnd != oldSelEnd || + didTouchFocusSelect()) { csr = new CommitSelectionReceiver(oldSelStart, oldSelEnd, newSelStart, newSelEnd); } |
