summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
authorDoris Liu <tianliu@google.com>2013-04-16 09:50:56 -0700
committerDoris Liu <tianliu@google.com>2013-04-18 13:59:42 -0700
commit4ff414daa2dd75446aaf0957dc433d74c03f3c1a (patch)
tree023b31844dbfe08ec82400d4e2583ef96c78e8ce /src/com/android/camera
parent86299cb80e14adc48ff2062000bae201bc6d501a (diff)
downloadandroid_packages_apps_Snap-4ff414daa2dd75446aaf0957dc433d74c03f3c1a.tar.gz
android_packages_apps_Snap-4ff414daa2dd75446aaf0957dc433d74c03f3c1a.tar.bz2
android_packages_apps_Snap-4ff414daa2dd75446aaf0957dc433d74c03f3c1a.zip
Allow swiping to filmstrip from blocker bar
Bug: 8607910 Change-Id: I69bfcf8d95d6071be7d65fbf433916740cbb655c
Diffstat (limited to 'src/com/android/camera')
-rw-r--r--src/com/android/camera/PreviewGestures.java37
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());