diff options
author | Winson Chung <winsonc@google.com> | 2012-11-26 17:05:37 -0800 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2012-11-26 17:06:34 -0800 |
commit | 1272e0e37b9f1aad4749543be97a1a3a6483abf0 (patch) | |
tree | 412325d065262b6568f019ceb1eef49d892fdc16 /policy/src | |
parent | 7be52cbc33157e4700b7d04e69d1149cd80e9096 (diff) | |
download | frameworks_base-1272e0e37b9f1aad4749543be97a1a3a6483abf0.zip frameworks_base-1272e0e37b9f1aad4749543be97a1a3a6483abf0.tar.gz frameworks_base-1272e0e37b9f1aad4749543be97a1a3a6483abf0.tar.bz2 |
Fixing issue where you can still click on a widget on a side page. (Bug 7568412)
Change-Id: I7105bc6b06e850e6029d12b0fe36fad00b538e1a
Diffstat (limited to 'policy/src')
-rw-r--r-- | policy/src/com/android/internal/policy/impl/keyguard/PagedView.java | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java b/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java index 33c2456..539ec1a 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java @@ -1019,15 +1019,22 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc return (x > (getViewportOffsetX() + getViewportWidth() - getRelativeChildOffset(mCurrentPage) + mPageSpacing)); } - /** Returns whether x and y originated within the buffered/unbuffered viewport */ - private boolean isTouchPointInViewport(int x, int y, boolean buffer) { - if (buffer) { - mTmpRect.set(mViewport.left - mViewport.width() / 2, mViewport.top, - mViewport.right + mViewport.width() / 2, mViewport.bottom); + /** Returns whether x and y originated within the buffered viewport */ + private boolean isTouchPointInViewportWithBuffer(int x, int y) { + mTmpRect.set(mViewport.left - mViewport.width() / 2, mViewport.top, + mViewport.right + mViewport.width() / 2, mViewport.bottom); + return mTmpRect.contains(x, y); + } + + /** Returns whether x and y originated within the current page view bounds */ + private boolean isTouchPointInCurrentPage(int x, int y) { + View v = getPageAt(getCurrentPage()); + if (v != null) { + mTmpRect.set((v.getLeft() - getScrollX()), 0, (v.getRight() - getScrollX()), + v.getBottom()); return mTmpRect.contains(x, y); - } else { - return mViewport.contains(x, y); } + return false; } @Override @@ -1108,7 +1115,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc mTouchState = TOUCH_STATE_REST; mScroller.abortAnimation(); } else { - if (isTouchPointInViewport((int) mDownMotionX, (int) mDownMotionY, true)) { + if (isTouchPointInViewportWithBuffer((int) mDownMotionX, (int) mDownMotionY)) { mTouchState = TOUCH_STATE_SCROLLING; } else { mTouchState = TOUCH_STATE_REST; @@ -1135,7 +1142,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc case MotionEvent.ACTION_CANCEL: resetTouchState(); // Just intercept the touch event on up if we tap outside the strict viewport - if (!isTouchPointInViewport((int) mLastMotionX, (int) mLastMotionY, false)) { + if (!isTouchPointInCurrentPage((int) mLastMotionX, (int) mLastMotionY)) { return true; } break; @@ -1169,7 +1176,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc // Disallow scrolling if we started the gesture from outside the viewport final float x = ev.getX(pointerIndex); final float y = ev.getY(pointerIndex); - if (!isTouchPointInViewport((int) x, (int) y, true)) return; + if (!isTouchPointInViewportWithBuffer((int) x, (int) y)) return; // If we're only allowing edge swipes, we break out early if the down event wasn't // at the edge. |