diff options
| author | Chet Haase <chet@google.com> | 2010-07-21 13:34:23 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-07-21 13:34:23 -0700 |
| commit | 46ea4828840952384bd37a73438c88ba5d931856 (patch) | |
| tree | e0ca1a6ff51990df5cffe61107e9ecfd6fa3dcc0 /core/java | |
| parent | d6665fc48ee09f60d593995ec5de922d42b9ec64 (diff) | |
| parent | ddc8e713ba345b24240fd16971283449c060a783 (diff) | |
| download | frameworks_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.java | 32 |
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) { |
