diff options
3 files changed, 19 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index f55699b9c65b..468fb57069ee 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -766,16 +766,17 @@ public class NotificationPanelView extends PanelView implements mIsExpansionFromHeadsUp = true; MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1); } + boolean handled = false; if ((!mIsExpanding || mHintAnimationRunning) && !mQsExpanded && mStatusBar.getBarState() != StatusBarState.SHADE && !mDozing) { - mAffordanceHelper.onTouchEvent(event); + handled |= mAffordanceHelper.onTouchEvent(event); } if (mOnlyAffordanceInThisMotion) { return true; } - mHeadsUpTouchHelper.onTouchEvent(event); + handled |= mHeadsUpTouchHelper.onTouchEvent(event); if (mQsOverscrollExpansionEnabled && !mHeadsUpTouchHelper.isTrackingHeadsUp() && handleQsTouch(event)) { @@ -784,9 +785,10 @@ public class NotificationPanelView extends PanelView implements if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyCollapsed()) { MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1); updateVerticalPanelPosition(event.getX()); + handled = true; } - super.onTouchEvent(event); - return true; + handled |= super.onTouchEvent(event); + return mDozing ? handled : true; } private boolean handleQsTouch(MotionEvent event) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index eca89396a33e..213b0aa0fa07 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -4872,7 +4872,7 @@ public class StatusBar extends SystemUI implements DemoMode, } public void wakeUpIfDozing(long time, View where) { - if (mDozing && mDozeScrimController.isPulsing()) { + if (mDozing) { PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); pm.wakeUp(time, "com.android.systemui:NODOZE"); mWakeUpComingFromTouch = true; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java index 7c42d00bae7b..1848d4ea438b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -34,6 +34,7 @@ import android.media.session.MediaSessionLegacyHelper; import android.net.Uri; import android.os.Bundle; import android.os.IBinder; +import android.os.SystemClock; import android.util.AttributeSet; import android.view.ActionMode; import android.view.InputQueue; @@ -65,6 +66,7 @@ public class StatusBarWindowView extends FrameLayout { public static final boolean DEBUG = StatusBar.DEBUG; private DragDownHelper mDragDownHelper; + private DoubleTapHelper mDoubleTapHelper; private NotificationStackScrollLayout mStackScrollLayout; private NotificationPanelView mNotificationPanel; private View mBrightnessMirror; @@ -89,6 +91,10 @@ public class StatusBarWindowView extends FrameLayout { mTransparentSrcPaint.setColor(0); mTransparentSrcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)); mFalsingManager = FalsingManager.getInstance(context); + mDoubleTapHelper = new DoubleTapHelper(this, active -> {}, () -> { + mService.wakeUpIfDozing(SystemClock.uptimeMillis(), this); + return true; + }, null, null); } @Override @@ -256,7 +262,7 @@ public class StatusBarWindowView extends FrameLayout { @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (mService.isDozing() && !mService.isPulsing()) { - // Discard all touch events in always-on. + // Capture all touch events in always-on. return true; } boolean intercept = false; @@ -282,7 +288,11 @@ public class StatusBarWindowView extends FrameLayout { @Override public boolean onTouchEvent(MotionEvent ev) { - boolean handled = mService.isDozing() && !mService.isPulsing(); + boolean handled = false; + if (mService.isDozing()) { + mDoubleTapHelper.onTouchEvent(ev); + handled = true; + } if (mService.getBarState() == StatusBarState.KEYGUARD && (!handled || mDragDownHelper.isDraggingDown())) { // we still want to finish our drag down gesture when locking the screen |