Making clear-all pressable correctly

Bug: 72222505
Test: Manual
Change-Id: I1ca35482a2090c329be6c906f5047612e6948ad2
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 29d999d..647415e 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -169,7 +169,7 @@
     // Keeps track of task views whose visual state should not be reset
     private ArraySet<TaskView> mIgnoreResetTaskViews = new ArraySet<>();
 
-    private RecentsViewContainer mContainerView;
+    private View mClearAllButton;
 
     // Variables for empty state
     private final Drawable mEmptyIcon;
@@ -311,12 +311,15 @@
 
     @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 @@
         mShowEmptyMessage = isEmpty;
         updateEmptyStateUi(hasSizeChanged);
         invalidate();
-        if (mContainerView != null) {
-            mContainerView.onEmptyStateChanged(!DEBUG_SHOW_CLEAR_ALL_BUTTON || mShowEmptyMessage);
+        if (mClearAllButton != null) {
+            updateClearAllButtonVisibility();
         }
     }
 
@@ -1119,8 +1122,13 @@
                 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 ece78c1..a949c89 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
@@ -43,7 +43,7 @@
         });
 
         mRecentsView = (RecentsView) findViewById(R.id.overview_panel);
-        mRecentsView.setContainerView(this);
+        mRecentsView.setClearAllButton(mClearAllButton);
     }
 
     @Override
@@ -74,8 +74,4 @@
         mRecentsView.setContentAlpha(alpha);
         setVisibility(alpha > 0 ? VISIBLE : GONE);
     }
-
-    public void onEmptyStateChanged(boolean isEmpty) {
-        mClearAllButton.setVisibility(isEmpty ? GONE : VISIBLE);
-    }
 }
\ No newline at end of file