am 2703a42d: When an EditText gains focus by tapping, move the insertion point where tapped.
Merge commit '2703a42d16af0e62da1bba02b6c935d98debf936' into gingerbread-plus-aosp * commit '2703a42d16af0e62da1bba02b6c935d98debf936': When an EditText gains focus by tapping, move the insertion point where tapped.
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -6474,6 +6474,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);
|
||||
}
|
||||
@@ -6685,13 +6690,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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user