Measure absolute value of pointer motion distance

If pointer is moving to the negative axis direction, pointer movement
distance will always less than pre-defined mMotionSlop, thus
TAP_OUTSIDE_STACK will have chance to be sent, will cause unnecessary
focus stack switch.

Change-Id: Ia4c066bebce250257c7361ef976907a0ca2c6461
Signed-off-by: tingna_sung <tingna_sung@htc.com>
This commit is contained in:
tingna_sung
2014-10-21 17:09:57 +08:00
parent af5bd75b3d
commit f2ad1a442b

View File

@@ -57,8 +57,8 @@ public class StackTapPointerEventListener implements PointerEventListener {
if (mPointerId >= 0) {
int index = motionEvent.findPointerIndex(mPointerId);
if ((motionEvent.getEventTime() - motionEvent.getDownTime()) > TAP_TIMEOUT_MSEC
|| (motionEvent.getX(index) - mDownX) > mMotionSlop
|| (motionEvent.getY(index) - mDownY) > mMotionSlop) {
|| Math.abs(motionEvent.getX(index) - mDownX) > mMotionSlop
|| Math.abs(motionEvent.getY(index) - mDownY) > mMotionSlop) {
mPointerId = -1;
}
}
@@ -73,7 +73,8 @@ public class StackTapPointerEventListener implements PointerEventListener {
final int y = (int)motionEvent.getY(index);
if ((motionEvent.getEventTime() - motionEvent.getDownTime())
< TAP_TIMEOUT_MSEC
&& (x - mDownX) < mMotionSlop && (y - mDownY) < mMotionSlop
&& Math.abs(x - mDownX) < mMotionSlop
&& Math.abs(y - mDownY) < mMotionSlop
&& !mTouchExcludeRegion.contains(x, y)) {
mService.mH.obtainMessage(H.TAP_OUTSIDE_STACK, x, y,
mDisplayContent).sendToTarget();