summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorChet Haase <chet@google.com>2010-07-21 13:34:23 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-07-21 13:34:23 -0700
commit46ea4828840952384bd37a73438c88ba5d931856 (patch)
treee0ca1a6ff51990df5cffe61107e9ecfd6fa3dcc0 /core/java
parentd6665fc48ee09f60d593995ec5de922d42b9ec64 (diff)
parentddc8e713ba345b24240fd16971283449c060a783 (diff)
downloadframeworks_base-46ea4828840952384bd37a73438c88ba5d931856.zip
frameworks_base-46ea4828840952384bd37a73438c88ba5d931856.tar.gz
frameworks_base-46ea4828840952384bd37a73438c88ba5d931856.tar.bz2
Merge "Fix issue with touch MOVE events on transformed containers"
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/ViewGroup.java32
1 files changed, 16 insertions, 16 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 15b8335..3c161ca 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -896,11 +896,25 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
return super.dispatchTouchEvent(ev);
}
+ // Calculate the offset point into the target's local coordinates
+ float xc;
+ float yc;
+ if (target.hasIdentityMatrix() || mAttachInfo == null) {
+ xc = scrolledXFloat - (float) target.mLeft;
+ yc = scrolledYFloat - (float) target.mTop;
+ } else {
+ // non-identity matrix: transform the point into the view's coordinates
+ final float[] localXY = mAttachInfo.mTmpTransformLocation;
+ localXY[0] = scrolledXFloat;
+ localXY[1] = scrolledYFloat;
+ target.getInverseMatrix().mapPoints(localXY);
+ xc = localXY[0] - (float) target.mLeft;
+ yc = localXY[1] - (float) target.mTop;
+ }
+
// if have a target, see if we're allowed to and want to intercept its
// events
if (!disallowIntercept && onInterceptTouchEvent(ev)) {
- final float xc = scrolledXFloat - (float) target.mLeft;
- final float yc = scrolledYFloat - (float) target.mTop;
mPrivateFlags &= ~CANCEL_NEXT_UP_EVENT;
ev.setAction(MotionEvent.ACTION_CANCEL);
ev.setLocation(xc, yc);
@@ -922,20 +936,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
// finally offset the event to the target's coordinate system and
// dispatch the event.
- float xc;
- float yc;
- if (hasIdentityMatrix() || mAttachInfo == null) {
- xc = scrolledXFloat - (float) target.mLeft;
- yc = scrolledYFloat - (float) target.mTop;
- } else {
- // non-identity matrix: transform the point into the view's coordinates
- final float[] localXY = mAttachInfo.mTmpTransformLocation;
- localXY[0] = scrolledXFloat;
- localXY[1] = scrolledYFloat;
- getInverseMatrix().mapPoints(localXY);
- xc = localXY[0] - (float) target.mLeft;
- yc = localXY[1] - (float) target.mTop;
- }
ev.setLocation(xc, yc);
if ((target.mPrivateFlags & CANCEL_NEXT_UP_EVENT) != 0) {