From 1caf7eb5999b7c57ca35cbe3579aa8d6b63394cd Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Wed, 7 Aug 2013 18:06:18 -0400 Subject: [PATCH] Don't always auto-collapse an empty notification shade. If the user is actively interacting with the shade, don't collapse it from underneath them. Bug:10226720 Change-Id: Idf26c8f59dc5a1a5ae3b4314f1ca81740b0517e7 --- .../statusbar/phone/PhoneStatusBar.java | 3 ++- .../statusbar/phone/StatusBarWindowView.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 3a8145408c6f..993b4faa06f2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -967,7 +967,8 @@ public class PhoneStatusBar extends BaseStatusBar { mHandler.sendEmptyMessage(MSG_HIDE_HEADS_UP); } - if (CLOSE_PANEL_WHEN_EMPTIED && mNotificationData.size() == 0) { + if (CLOSE_PANEL_WHEN_EMPTIED && mNotificationData.size() == 0 + && !mStatusBarWindow.isPointerDown()) { animateCollapsePanels(); } } 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 a600aae386d9..800bc02fc3bf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -42,6 +42,7 @@ public class StatusBarWindowView extends FrameLayout private NotificationRowLayout latestItems; private NotificationPanelView mNotificationPanel; private ScrollView mScrollView; + private boolean mPointerDown; PhoneStatusBar mService; @@ -86,6 +87,7 @@ public class StatusBarWindowView extends FrameLayout @Override public boolean onInterceptTouchEvent(MotionEvent ev) { + registerPointer(ev); boolean intercept = false; if (mNotificationPanel.isFullyExpanded() && mScrollView.getVisibility() == View.VISIBLE) { intercept = mExpandHelper.onInterceptTouchEvent(ev); @@ -131,5 +133,21 @@ public class StatusBarWindowView extends FrameLayout mExpandHelper.cancel(); } } + + private void registerPointer(MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + mPointerDown = true; + break; + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + mPointerDown = false; + break; + } + } + + public boolean isPointerDown() { + return mPointerDown; + } }