diff options
| author | 2011-07-14 22:32:09 -0700 | |
|---|---|---|
| committer | 2011-07-14 22:32:09 -0700 | |
| commit | 997ea74ef78139b29ab2a0250aa243e6d96d8dfd (patch) | |
| tree | 28e0cd51127aee18525f014baf814343843e345a | |
| parent | 945caeeaa8f5dfacdb878239e0bfa8c9d11d9339 (diff) | |
| parent | a6111377e1edbc5d63fc2a7205d58b2d9c21d978 (diff) | |
Merge "Remove edge slop support."
| -rw-r--r-- | core/java/android/view/ViewAncestor.java | 45 | ||||
| -rw-r--r-- | core/java/android/widget/AbsListView.java | 8 | ||||
| -rw-r--r-- | core/java/android/widget/HorizontalScrollView.java | 7 | ||||
| -rw-r--r-- | core/java/android/widget/ListView.java | 11 | ||||
| -rw-r--r-- | core/java/android/widget/ScrollView.java | 7 | ||||
| -rw-r--r-- | services/input/InputReader.cpp | 71 | ||||
| -rw-r--r-- | services/input/InputReader.h | 2 |
7 files changed, 6 insertions, 145 deletions
diff --git a/core/java/android/view/ViewAncestor.java b/core/java/android/view/ViewAncestor.java index 2ab5a98f2c3f..d539a03b4eda 100644 --- a/core/java/android/view/ViewAncestor.java +++ b/core/java/android/view/ViewAncestor.java @@ -2684,51 +2684,6 @@ public final class ViewAncestor extends Handler implements ViewParent, return; } - // Apply edge slop and try again, if appropriate. - final int edgeFlags = event.getEdgeFlags(); - if (edgeFlags != 0 && mView instanceof ViewGroup) { - final int edgeSlop = mViewConfiguration.getScaledEdgeSlop(); - int direction = View.FOCUS_UP; - int x = (int)event.getX(); - int y = (int)event.getY(); - final int[] deltas = new int[2]; - - if ((edgeFlags & MotionEvent.EDGE_TOP) != 0) { - direction = View.FOCUS_DOWN; - if ((edgeFlags & MotionEvent.EDGE_LEFT) != 0) { - deltas[0] = edgeSlop; - x += edgeSlop; - } else if ((edgeFlags & MotionEvent.EDGE_RIGHT) != 0) { - deltas[0] = -edgeSlop; - x -= edgeSlop; - } - } else if ((edgeFlags & MotionEvent.EDGE_BOTTOM) != 0) { - direction = View.FOCUS_UP; - if ((edgeFlags & MotionEvent.EDGE_LEFT) != 0) { - deltas[0] = edgeSlop; - x += edgeSlop; - } else if ((edgeFlags & MotionEvent.EDGE_RIGHT) != 0) { - deltas[0] = -edgeSlop; - x -= edgeSlop; - } - } else if ((edgeFlags & MotionEvent.EDGE_LEFT) != 0) { - direction = View.FOCUS_RIGHT; - } else if ((edgeFlags & MotionEvent.EDGE_RIGHT) != 0) { - direction = View.FOCUS_LEFT; - } - - View nearest = FocusFinder.getInstance().findNearestTouchable( - ((ViewGroup) mView), x, y, direction, deltas); - if (nearest != null) { - event.offsetLocation(deltas[0], deltas[1]); - event.setEdgeFlags(0); - if (mView.dispatchPointerEvent(event)) { - finishMotionEvent(event, sendDone, true); - return; - } - } - } - // Pointer event was unhandled. finishMotionEvent(event, sendDone, false); } diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 1e10a71a4ab0..2423cd1e3341 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2840,14 +2840,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } postDelayed(mPendingCheckForTap, ViewConfiguration.getTapTimeout()); } else { - if (ev.getEdgeFlags() != 0 && motionPosition < 0) { - // If we couldn't find a view to click on, but the down event - // was touching the edge, we will bail out and try again. - // This allows the edge correcting code in ViewAncestor to try to - // find a nearby view to select - return false; - } - if (mTouchMode == TOUCH_MODE_FLING) { // Stopped a fling. It is a scroll. createScrollingCache(); diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java index 7c9be1e8755e..b428301bfaef 100644 --- a/core/java/android/widget/HorizontalScrollView.java +++ b/core/java/android/widget/HorizontalScrollView.java @@ -498,13 +498,6 @@ public class HorizontalScrollView extends FrameLayout { @Override public boolean onTouchEvent(MotionEvent ev) { - - if (ev.getAction() == MotionEvent.ACTION_DOWN && ev.getEdgeFlags() != 0) { - // Don't handle edge touches immediately -- they may actually belong to one of our - // descendants. - return false; - } - if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index e7a9e41fb1c2..1f29b1614006 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -3588,17 +3588,6 @@ public class ListView extends AbsListView { return null; } - @Override - public boolean onTouchEvent(MotionEvent ev) { - //noinspection SimplifiableIfStatement - if (mItemsCanFocus && ev.getAction() == MotionEvent.ACTION_DOWN && ev.getEdgeFlags() != 0) { - // Don't handle edge touches immediately -- they may actually belong to one of our - // descendants. - return false; - } - return super.onTouchEvent(ev); - } - /** * Returns the set of checked items ids. The result is only valid if the * choice mode has not been set to {@link #CHOICE_MODE_NONE}. diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java index 12775a49ff3a..191410bf3624 100644 --- a/core/java/android/widget/ScrollView.java +++ b/core/java/android/widget/ScrollView.java @@ -506,13 +506,6 @@ public class ScrollView extends FrameLayout { @Override public boolean onTouchEvent(MotionEvent ev) { - - if (ev.getAction() == MotionEvent.ACTION_DOWN && ev.getEdgeFlags() != 0) { - // Don't handle edge touches immediately -- they may actually belong to one of our - // descendants. - return false; - } - if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp index 49cb86437bed..b2fbcb15bfba 100644 --- a/services/input/InputReader.cpp +++ b/services/input/InputReader.cpp @@ -181,25 +181,6 @@ static bool isPointerDown(int32_t buttonState) { | AMOTION_EVENT_BUTTON_TERTIARY); } -static int32_t calculateEdgeFlagsUsingPointerBounds( - const sp<PointerControllerInterface>& pointerController, float x, float y) { - int32_t edgeFlags = 0; - float minX, minY, maxX, maxY; - if (pointerController->getBounds(&minX, &minY, &maxX, &maxY)) { - if (x <= minX) { - edgeFlags |= AMOTION_EVENT_EDGE_FLAG_LEFT; - } else if (x >= maxX) { - edgeFlags |= AMOTION_EVENT_EDGE_FLAG_RIGHT; - } - if (y <= minY) { - edgeFlags |= AMOTION_EVENT_EDGE_FLAG_TOP; - } else if (y >= maxY) { - edgeFlags |= AMOTION_EVENT_EDGE_FLAG_BOTTOM; - } - } - return edgeFlags; -} - static float calculateCommonVector(float a, float b) { if (a > 0 && b > 0) { return a < b ? a : b; @@ -1619,7 +1600,6 @@ void CursorInputMapper::sync(nsecs_t when) { } int32_t motionEventAction; - int32_t motionEventEdgeFlags; int32_t lastButtonState, currentButtonState; PointerProperties pointerProperties; PointerCoords pointerCoords; @@ -1697,8 +1677,6 @@ void CursorInputMapper::sync(nsecs_t when) { } } - motionEventEdgeFlags = AMOTION_EVENT_EDGE_FLAG_NONE; - pointerProperties.clear(); pointerProperties.id = 0; pointerProperties.toolType = AMOTION_EVENT_TOOL_TYPE_MOUSE; @@ -1742,11 +1720,6 @@ void CursorInputMapper::sync(nsecs_t when) { mPointerController->getPosition(&x, &y); pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_X, x); pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, y); - - if (motionEventAction == AMOTION_EVENT_ACTION_DOWN) { - motionEventEdgeFlags = calculateEdgeFlagsUsingPointerBounds( - mPointerController, x, y); - } } else { pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_X, deltaX); pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, deltaY); @@ -1771,7 +1744,7 @@ void CursorInputMapper::sync(nsecs_t when) { // Send motion event. int32_t metaState = mContext->getGlobalMetaState(); getDispatcher()->notifyMotion(when, getDeviceId(), mSource, policyFlags, - motionEventAction, 0, metaState, currentButtonState, motionEventEdgeFlags, + motionEventAction, 0, metaState, currentButtonState, 0, 1, &pointerProperties, &pointerCoords, mXPrecision, mYPrecision, downTime); // Send hover move after UP to tell the application that the mouse is hovering now. @@ -3168,9 +3141,8 @@ void TouchInputMapper::dispatchTouches(nsecs_t when, uint32_t policyFlags) { } // Update current touch coordinates. - int32_t edgeFlags; float xPrecision, yPrecision; - prepareTouches(&edgeFlags, &xPrecision, &yPrecision); + prepareTouches(&xPrecision, &yPrecision); // Dispatch motions. BitSet32 currentIdBits = mCurrentTouch.idBits; @@ -3239,13 +3211,10 @@ void TouchInputMapper::dispatchTouches(nsecs_t when, uint32_t policyFlags) { if (dispatchedIdBits.count() == 1) { // First pointer is going down. Set down time. mDownTime = when; - } else { - // Only send edge flags with first pointer down. - edgeFlags = AMOTION_EVENT_EDGE_FLAG_NONE; } dispatchMotion(when, policyFlags, mTouchSource, - AMOTION_EVENT_ACTION_POINTER_DOWN, 0, metaState, buttonState, edgeFlags, + AMOTION_EVENT_ACTION_POINTER_DOWN, 0, metaState, buttonState, 0, mCurrentTouchProperties, mCurrentTouchCoords, mCurrentTouch.idToIndex, dispatchedIdBits, downId, xPrecision, yPrecision, mDownTime); @@ -3259,8 +3228,7 @@ void TouchInputMapper::dispatchTouches(nsecs_t when, uint32_t policyFlags) { } } -void TouchInputMapper::prepareTouches(int32_t* outEdgeFlags, - float* outXPrecision, float* outYPrecision) { +void TouchInputMapper::prepareTouches(float* outXPrecision, float* outYPrecision) { uint32_t currentPointerCount = mCurrentTouch.pointerCount; uint32_t lastPointerCount = mLastTouch.pointerCount; @@ -3471,28 +3439,6 @@ void TouchInputMapper::prepareTouches(int32_t* outEdgeFlags, properties.toolType = getTouchToolType(mCurrentTouch.pointers[i].isStylus); } - // Check edge flags by looking only at the first pointer since the flags are - // global to the event. - *outEdgeFlags = AMOTION_EVENT_EDGE_FLAG_NONE; - if (lastPointerCount == 0 && currentPointerCount > 0) { - const PointerData& in = mCurrentTouch.pointers[0]; - - if (in.x <= mRawAxes.x.minValue) { - *outEdgeFlags |= rotateEdgeFlag(AMOTION_EVENT_EDGE_FLAG_LEFT, - mLocked.surfaceOrientation); - } else if (in.x >= mRawAxes.x.maxValue) { - *outEdgeFlags |= rotateEdgeFlag(AMOTION_EVENT_EDGE_FLAG_RIGHT, - mLocked.surfaceOrientation); - } - if (in.y <= mRawAxes.y.minValue) { - *outEdgeFlags |= rotateEdgeFlag(AMOTION_EVENT_EDGE_FLAG_TOP, - mLocked.surfaceOrientation); - } else if (in.y >= mRawAxes.y.maxValue) { - *outEdgeFlags |= rotateEdgeFlag(AMOTION_EVENT_EDGE_FLAG_BOTTOM, - mLocked.surfaceOrientation); - } - } - *outXPrecision = mLocked.orientedXPrecision; *outYPrecision = mLocked.orientedYPrecision; } @@ -3640,19 +3586,12 @@ void TouchInputMapper::dispatchPointerGestures(nsecs_t when, uint32_t policyFlag downGestureIdBits.clearBit(id); dispatchedGestureIdBits.markBit(id); - int32_t edgeFlags = AMOTION_EVENT_EDGE_FLAG_NONE; if (dispatchedGestureIdBits.count() == 1) { - // First pointer is going down. Calculate edge flags and set down time. - uint32_t index = mPointerGesture.currentGestureIdToIndex[id]; - const PointerCoords& downCoords = mPointerGesture.currentGestureCoords[index]; - edgeFlags = calculateEdgeFlagsUsingPointerBounds(mPointerController, - downCoords.getAxisValue(AMOTION_EVENT_AXIS_X), - downCoords.getAxisValue(AMOTION_EVENT_AXIS_Y)); mPointerGesture.downTime = when; } dispatchMotion(when, policyFlags, mPointerSource, - AMOTION_EVENT_ACTION_POINTER_DOWN, 0, metaState, buttonState, edgeFlags, + AMOTION_EVENT_ACTION_POINTER_DOWN, 0, metaState, buttonState, 0, mPointerGesture.currentGestureProperties, mPointerGesture.currentGestureCoords, mPointerGesture.currentGestureIdToIndex, dispatchedGestureIdBits, id, diff --git a/services/input/InputReader.h b/services/input/InputReader.h index 69fa6b45a560..b1fdcf26a407 100644 --- a/services/input/InputReader.h +++ b/services/input/InputReader.h @@ -1176,7 +1176,7 @@ private: TouchResult consumeOffScreenTouches(nsecs_t when, uint32_t policyFlags); void dispatchTouches(nsecs_t when, uint32_t policyFlags); - void prepareTouches(int32_t* outEdgeFlags, float* outXPrecision, float* outYPrecision); + void prepareTouches(float* outXPrecision, float* outYPrecision); void dispatchPointerGestures(nsecs_t when, uint32_t policyFlags, bool isTimeout); bool preparePointerGestures(nsecs_t when, bool* outCancelPreviousGesture, bool* outFinishPreviousGesture, bool isTimeout); |