diff options
| author | 2018-05-04 12:44:07 -0700 | |
|---|---|---|
| committer | 2018-05-04 12:44:07 -0700 | |
| commit | fd61dedd926bcc3d66f822be630c16cc62f9b0f1 (patch) | |
| tree | 1c3b26eb4c64706382b36c296fde257b8e327601 | |
| parent | a3329bce9d98c0002c185ee10858f8475e34133b (diff) | |
| parent | ffee7c721169adddcfde879944900ca426532749 (diff) | |
Merge "Allow gestures to executed started from deadzone on nav bar" into pi-dev
am: ffee7c7211
Change-Id: I5f28cff723b3c2c64e2ace8cd346b03ca70beef6
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java | 27 |
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; } |