summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Brown <jeffbrown@google.com> 2011-07-14 22:32:09 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2011-07-14 22:32:09 -0700
commit997ea74ef78139b29ab2a0250aa243e6d96d8dfd (patch)
tree28e0cd51127aee18525f014baf814343843e345a
parent945caeeaa8f5dfacdb878239e0bfa8c9d11d9339 (diff)
parenta6111377e1edbc5d63fc2a7205d58b2d9c21d978 (diff)
Merge "Remove edge slop support."
-rw-r--r--core/java/android/view/ViewAncestor.java45
-rw-r--r--core/java/android/widget/AbsListView.java8
-rw-r--r--core/java/android/widget/HorizontalScrollView.java7
-rw-r--r--core/java/android/widget/ListView.java11
-rw-r--r--core/java/android/widget/ScrollView.java7
-rw-r--r--services/input/InputReader.cpp71
-rw-r--r--services/input/InputReader.h2
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);