diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index bee63ee743ca5..d0d2b267f657a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -356,6 +356,14 @@ public class PanelView extends FrameLayout { return mExpandedFraction; } + public boolean isFullyExpanded() { + return mExpandedHeight == getFullHeight(); + } + + public boolean isFullyCollapsed() { + return mExpandedHeight == 0; + } + public void setBar(PanelBar panelBar) { mBar = panelBar; } @@ -367,13 +375,13 @@ public class PanelView extends FrameLayout { public void collapse() { // TODO: abort animation or ongoing touch - if (mExpandedHeight > 0) { + if (!isFullyCollapsed()) { fling(-mSelfCollapseVelocityPx, /*always=*/ true); } } public void expand() { - if (mExpandedHeight < getFullHeight()) { + if (!isFullyExpanded()) { fling (mSelfExpandVelocityPx, /*always=*/ 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 2d4c9ee44b885..e0b7fe6f9c286 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -21,6 +21,7 @@ import android.util.AttributeSet; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.View; import android.widget.FrameLayout; import android.widget.ScrollView; import android.widget.TextSwitcher; @@ -36,6 +37,7 @@ public class StatusBarWindowView extends FrameLayout private ExpandHelper mExpandHelper; private NotificationRowLayout latestItems; + private NotificationPanelView mNotificationPanel; PhoneStatusBar mService; @@ -49,6 +51,7 @@ public class StatusBarWindowView extends FrameLayout super.onAttachedToWindow(); latestItems = (NotificationRowLayout) findViewById(R.id.latestItems); ScrollView scroller = (ScrollView) findViewById(R.id.scroll); + mNotificationPanel = (NotificationPanelView) findViewById(R.id.notification_panel); int minHeight = getResources().getDimensionPixelSize(R.dimen.notification_row_min_height); int maxHeight = getResources().getDimensionPixelSize(R.dimen.notification_row_max_height); mExpandHelper = new ExpandHelper(mContext, latestItems, minHeight, maxHeight); @@ -71,8 +74,13 @@ public class StatusBarWindowView extends FrameLayout @Override public boolean onInterceptTouchEvent(MotionEvent ev) { - boolean intercept = mExpandHelper.onInterceptTouchEvent(ev) || - super.onInterceptTouchEvent(ev); + boolean intercept = false; + if (mNotificationPanel.isFullyExpanded()) { + intercept = mExpandHelper.onInterceptTouchEvent(ev); + } + if (!intercept) { + super.onInterceptTouchEvent(ev); + } if (intercept) { MotionEvent cancellation = MotionEvent.obtain(ev); cancellation.setAction(MotionEvent.ACTION_CANCEL); @@ -84,8 +92,13 @@ public class StatusBarWindowView extends FrameLayout @Override public boolean onTouchEvent(MotionEvent ev) { - boolean handled = mExpandHelper.onTouchEvent(ev) || - super.onTouchEvent(ev); + boolean handled = false; + if (mNotificationPanel.isFullyExpanded()) { + handled = mExpandHelper.onTouchEvent(ev); + } + if (!handled) { + handled = super.onTouchEvent(ev); + } return handled; } }