resolved conflicts for merge of c0728cc0 to gingerbread-plus-aosp
Change-Id: I1b941e0610e498365d441c7bd23af276d1b5f986
This commit is contained in:
@@ -91,6 +91,7 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewConfiguration;
|
||||||
import android.view.ViewDebug;
|
import android.view.ViewDebug;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewGroup.LayoutParams;
|
import android.view.ViewGroup.LayoutParams;
|
||||||
@@ -6841,16 +6842,17 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
@Override
|
@Override
|
||||||
public boolean onTouchEvent(MotionEvent event) {
|
public boolean onTouchEvent(MotionEvent event) {
|
||||||
final int action = event.getActionMasked();
|
final int action = event.getActionMasked();
|
||||||
if (action == MotionEvent.ACTION_DOWN) {
|
|
||||||
if (hasInsertionController()) {
|
|
||||||
getInsertionController().onTouchEvent(event);
|
|
||||||
}
|
|
||||||
if (hasSelectionController()) {
|
|
||||||
getSelectionController().onTouchEvent(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset this state; it will be re-set if super.onTouchEvent
|
if (mInsertionPointCursorController != null) {
|
||||||
// causes focus to move to the view.
|
mInsertionPointCursorController.onTouchEvent(event);
|
||||||
|
}
|
||||||
|
if (mSelectionModifierCursorController != null) {
|
||||||
|
mSelectionModifierCursorController.onTouchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action == MotionEvent.ACTION_DOWN) {
|
||||||
|
// Reset this state; it will be re-set if super.onTouchEvent
|
||||||
|
// causes focus to move to the view.
|
||||||
mTouchFocusSelected = false;
|
mTouchFocusSelected = false;
|
||||||
mScrolled = false;
|
mScrolled = false;
|
||||||
}
|
}
|
||||||
@@ -6869,13 +6871,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
|
|
||||||
if ((mMovement != null || onCheckIsTextEditor()) && isEnabled() &&
|
if ((mMovement != null || onCheckIsTextEditor()) && isEnabled() &&
|
||||||
mText instanceof Spannable && mLayout != null) {
|
mText instanceof Spannable && mLayout != null) {
|
||||||
if (hasInsertionController()) {
|
|
||||||
getInsertionController().onTouchEvent(event);
|
|
||||||
}
|
|
||||||
if (hasSelectionController()) {
|
|
||||||
getSelectionController().onTouchEvent(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean handled = false;
|
boolean handled = false;
|
||||||
|
|
||||||
// Save previous selection, in case this event is used to show the IME.
|
// Save previous selection, in case this event is used to show the IME.
|
||||||
@@ -7804,7 +7799,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
}
|
}
|
||||||
mDrawable = mSelectHandleLeft;
|
mDrawable = mSelectHandleLeft;
|
||||||
handleWidth = mDrawable.getIntrinsicWidth();
|
handleWidth = mDrawable.getIntrinsicWidth();
|
||||||
mHotspotX = handleWidth / 4 * 3;
|
mHotspotX = (handleWidth * 3) / 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7971,6 +7966,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
mIsDragging = true;
|
mIsDragging = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case MotionEvent.ACTION_MOVE: {
|
case MotionEvent.ACTION_MOVE: {
|
||||||
final float rawX = ev.getRawX();
|
final float rawX = ev.getRawX();
|
||||||
final float rawY = ev.getRawY();
|
final float rawY = ev.getRawY();
|
||||||
@@ -7981,6 +7977,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case MotionEvent.ACTION_UP:
|
case MotionEvent.ACTION_UP:
|
||||||
case MotionEvent.ACTION_CANCEL:
|
case MotionEvent.ACTION_CANCEL:
|
||||||
mIsDragging = false;
|
mIsDragging = false;
|
||||||
@@ -8095,6 +8092,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
private int mMinTouchOffset, mMaxTouchOffset;
|
private int mMinTouchOffset, mMaxTouchOffset;
|
||||||
// Whether selection anchors are active
|
// Whether selection anchors are active
|
||||||
private boolean mIsShowing;
|
private boolean mIsShowing;
|
||||||
|
// Double tap detection
|
||||||
|
private long mPreviousTapUpTime = 0;
|
||||||
|
private int mPreviousTapPositionX;
|
||||||
|
private int mPreviousTapPositionY;
|
||||||
|
|
||||||
SelectionModifierCursorController() {
|
SelectionModifierCursorController() {
|
||||||
mStartHandle = new HandleView(this, HandleView.LEFT);
|
mStartHandle = new HandleView(this, HandleView.LEFT);
|
||||||
@@ -8189,6 +8190,24 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
// Remember finger down position, to be able to start selection from there
|
// Remember finger down position, to be able to start selection from there
|
||||||
mMinTouchOffset = mMaxTouchOffset = getOffset(x, y);
|
mMinTouchOffset = mMaxTouchOffset = getOffset(x, y);
|
||||||
|
|
||||||
|
// Double tap detection
|
||||||
|
long duration = SystemClock.uptimeMillis() - mPreviousTapUpTime;
|
||||||
|
if (duration <= ViewConfiguration.getDoubleTapTimeout()) {
|
||||||
|
final int deltaX = x - mPreviousTapPositionX;
|
||||||
|
final int deltaY = y - mPreviousTapPositionY;
|
||||||
|
final int distanceSquared = deltaX * deltaX + deltaY * deltaY;
|
||||||
|
final int doubleTapSlop = ViewConfiguration.get(getContext()).getScaledDoubleTapSlop();
|
||||||
|
final int slopSquared = doubleTapSlop * doubleTapSlop;
|
||||||
|
if (distanceSquared < slopSquared) {
|
||||||
|
startTextSelectionMode();
|
||||||
|
// Hacky: onTapUpEvent will open a context menu with cut/copy
|
||||||
|
// Prevent this by hiding handles which will be revived instead.
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mPreviousTapPositionX = x;
|
||||||
|
mPreviousTapPositionY = y;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MotionEvent.ACTION_POINTER_DOWN:
|
case MotionEvent.ACTION_POINTER_DOWN:
|
||||||
@@ -8200,6 +8219,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
updateMinAndMaxOffsets(event);
|
updateMinAndMaxOffsets(event);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MotionEvent.ACTION_UP:
|
||||||
|
mPreviousTapUpTime = SystemClock.uptimeMillis();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user