summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java27
1 files changed, 23 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 6cc96da96e45..2fac13641405 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -124,6 +124,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
private GestureHelper mGestureHelper;
private final DeadZone mDeadZone;
+ private boolean mDeadZoneConsuming = false;
private final NavigationBarTransitions mBarTransitions;
private final OverviewProxyService mOverviewProxyService;
@@ -291,8 +292,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
- if (mDeadZone.onTouchEvent(event)) {
- // Consumed the touch event
+ if (shouldDeadZoneConsumeTouchEvents(event)) {
return true;
}
switch (event.getActionMasked()) {
@@ -314,8 +314,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
@Override
public boolean onTouchEvent(MotionEvent event) {
- if (mDeadZone.onTouchEvent(event)) {
- // Consumed the touch event
+ if (shouldDeadZoneConsumeTouchEvents(event)) {
return true;
}
if (mGestureHelper.onTouchEvent(event)) {
@@ -324,6 +323,26 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
return super.onTouchEvent(event);
}
+ private boolean shouldDeadZoneConsumeTouchEvents(MotionEvent event) {
+ if (mDeadZone.onTouchEvent(event) || mDeadZoneConsuming) {
+ switch (event.getActionMasked()) {
+ case MotionEvent.ACTION_DOWN:
+ // Allow gestures starting in the deadzone to be slippery
+ setSlippery(true);
+ mDeadZoneConsuming = true;
+ break;
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP:
+ // When a gesture started in the deadzone is finished, restore slippery state
+ updateSlippery();
+ mDeadZoneConsuming = false;
+ break;
+ }
+ return true;
+ }
+ return false;
+ }
+
public @NavigationBarCompat.HitTarget int getDownHitTarget() {
return mDownHitTarget;
}