diff options
author | Doris Liu <tianliu@google.com> | 2013-04-22 13:40:33 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-04-22 13:40:33 -0700 |
commit | 03109433ea28355fb98d9c80243463f1e19c1e37 (patch) | |
tree | 29fb65e593282f42d6b3eb2c9387513c9c50d4d9 /src/com | |
parent | 96fc6a6aa9497d88a04f0f13ba64ae69399b0ad3 (diff) | |
parent | 0732c0cf88176d3e0353ccc91d43a28e2b7015b4 (diff) | |
download | android_packages_apps_Snap-03109433ea28355fb98d9c80243463f1e19c1e37.tar.gz android_packages_apps_Snap-03109433ea28355fb98d9c80243463f1e19c1e37.tar.bz2 android_packages_apps_Snap-03109433ea28355fb98d9c80243463f1e19c1e37.zip |
am 14fe2887: Merge "Allow swiping to filmstrip from blocker bar" into gb-ub-photos-bryce
* commit '14fe288784c574c84edbf84306329dc8b70d8b4d':
Allow swiping to filmstrip from blocker bar
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/camera/PreviewGestures.java | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/src/com/android/camera/PreviewGestures.java b/src/com/android/camera/PreviewGestures.java index 351da0afd..b968a0244 100644 --- a/src/com/android/camera/PreviewGestures.java +++ b/src/com/android/camera/PreviewGestures.java @@ -59,6 +59,7 @@ public class PreviewGestures private MotionEvent mCurrent; private ScaleGestureDetector mScale; private List<View> mReceivers; + private List<View> mUnclickableAreas; private int mMode; private int mSlop; private int mTapTimeout; @@ -127,12 +128,41 @@ public class PreviewGestures mReceivers.add(v); } + public void addUnclickableArea(View v) { + if (mUnclickableAreas == null) { + mUnclickableAreas = new ArrayList<View>(); + } + mUnclickableAreas.add(v); + } + public void clearTouchReceivers() { if (mReceivers != null) { mReceivers.clear(); } } + public void clearUnclickableAreas() { + if (mUnclickableAreas != null) { + mUnclickableAreas.clear(); + } + } + + private boolean checkClickable(MotionEvent m) { + if (mUnclickableAreas != null) { + for (View v : mUnclickableAreas) { + if (isInside(m, v)) { + return false; + } + } + } + return true; + } + + public void reset() { + clearTouchReceivers(); + clearUnclickableAreas(); + } + public boolean dispatchTouch(MotionEvent m) { if (!mEnabled) { return mActivity.superDispatchTouchEvent(m); @@ -149,7 +179,7 @@ public class PreviewGestures mMode = MODE_PIE; return sendToPie(m); } - if (mPie != null && !mZoomOnly) { + if (mPie != null && !mZoomOnly && checkClickable(m)) { mHandler.sendEmptyMessageDelayed(MSG_PIE, TIMEOUT_PIE); } if (mZoom != null) { @@ -216,9 +246,10 @@ public class PreviewGestures } if (MotionEvent.ACTION_UP == m.getActionMasked()) { cancelPie(); - cancelActivityTouchHandling(m); // must have been tap - if (m.getEventTime() - mDown.getEventTime() < mTapTimeout) { + if (m.getEventTime() - mDown.getEventTime() < mTapTimeout + && checkClickable(m)) { + cancelActivityTouchHandling(m); mTapListener.onSingleTapUp(null, (int) mDown.getX() - mOverlay.getWindowPositionX(), (int) mDown.getY() - mOverlay.getWindowPositionY()); |