Fixing issue where you can still click on a widget on a side page. (Bug 7568412)

Change-Id: I7105bc6b06e850e6029d12b0fe36fad00b538e1a
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 @@
         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 @@
                     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 @@
             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 @@
         // 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.