From d9e53c13b19ee479ad6006fbea20606442a189f6 Mon Sep 17 00:00:00 2001 From: Vadim Tryshev Date: Tue, 17 Apr 2018 18:32:43 -0700 Subject: [PATCH] Making clear-all pressable correctly Bug: 72222505 Test: Manual Change-Id: I1ca35482a2090c329be6c906f5047612e6948ad2 --- .../android/quickstep/views/RecentsView.java | 32 ++++++++++++------- .../quickstep/views/RecentsViewContainer.java | 6 +--- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 29d999dd3b..647415e58f 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -169,7 +169,7 @@ public abstract class RecentsView // Keeps track of task views whose visual state should not be reset private ArraySet mIgnoreResetTaskViews = new ArraySet<>(); - private RecentsViewContainer mContainerView; + private View mClearAllButton; // Variables for empty state private final Drawable mEmptyIcon; @@ -311,12 +311,15 @@ public abstract class RecentsView @Override public boolean onTouchEvent(MotionEvent ev) { - if (DEBUG_SHOW_CLEAR_ALL_BUTTON && mTouchState == TOUCH_STATE_REST && mScroller.isFinished() - && getChildCount() != 0 - && ev.getX() > getChildAt(getChildCount() - 1).getRight() - getScrollX()) { - // If nothing is in motion, allow events to the right of the last task to go to the - // Clear All button. - return false; + if (DEBUG_SHOW_CLEAR_ALL_BUTTON && ev.getAction() == MotionEvent.ACTION_DOWN + && mTouchState == TOUCH_STATE_REST && mScroller.isFinished() + && mClearAllButton.getVisibility() == View.VISIBLE) { + mClearAllButton.getHitRect(mTempRect); + mTempRect.offset(-getLeft(), -getTop()); + if (mTempRect.contains((int) ev.getX(), (int) ev.getY())) { + // If nothing is in motion, let the Clear All button process the event. + return false; + } } if (ev.getAction() == MotionEvent.ACTION_UP && mShowEmptyMessage) { @@ -928,8 +931,8 @@ public abstract class RecentsView mShowEmptyMessage = isEmpty; updateEmptyStateUi(hasSizeChanged); invalidate(); - if (mContainerView != null) { - mContainerView.onEmptyStateChanged(!DEBUG_SHOW_CLEAR_ALL_BUTTON || mShowEmptyMessage); + if (mClearAllButton != null) { + updateClearAllButtonVisibility(); } } @@ -1119,8 +1122,13 @@ public abstract class RecentsView R.dimen.clear_all_container_width) - getPaddingEnd(); } - public void setContainerView(RecentsViewContainer containerView) { - mContainerView = containerView; - mContainerView.onEmptyStateChanged(!DEBUG_SHOW_CLEAR_ALL_BUTTON || mShowEmptyMessage); + private void updateClearAllButtonVisibility() { + mClearAllButton.setVisibility( + !DEBUG_SHOW_CLEAR_ALL_BUTTON || mShowEmptyMessage ? GONE : VISIBLE); + } + + public void setClearAllButton(View clearAllButton) { + mClearAllButton = clearAllButton; + updateClearAllButtonVisibility(); } } diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java index ece78c1fdc..a949c89f2c 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java +++ b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java @@ -43,7 +43,7 @@ public class RecentsViewContainer extends InsettableFrameLayout { }); mRecentsView = (RecentsView) findViewById(R.id.overview_panel); - mRecentsView.setContainerView(this); + mRecentsView.setClearAllButton(mClearAllButton); } @Override @@ -74,8 +74,4 @@ public class RecentsViewContainer extends InsettableFrameLayout { mRecentsView.setContentAlpha(alpha); setVisibility(alpha > 0 ? VISIBLE : GONE); } - - public void onEmptyStateChanged(boolean isEmpty) { - mClearAllButton.setVisibility(isEmpty ? GONE : VISIBLE); - } } \ No newline at end of file