From 2fbddc49498c3b52d5a30f99406964c550678177 Mon Sep 17 00:00:00 2001 From: Jeremy Sim Date: Sat, 17 Sep 2022 15:32:11 -0700 Subject: [PATCH] Fix small bug with DWB banners not animating out promptly This CL fixes an issue where initiating split select on a task with a DWB banner would result in the DWB banner sticking around long after the thumbnail itself fades, interfering visually with the rest of the animation. Fixed by hiding all child views of the taskview when splitting, instead of just the thumbnail. Fixes: 247257724 Test: Manual Change-Id: I4dbeccf8dd28431749df5e78482e80aacf5df55a --- .../views/DigitalWellBeingToast.java | 8 ++++++ .../quickstep/views/GroupedTaskView.java | 28 +++++++++++++++---- .../android/quickstep/views/RecentsView.java | 26 +++++++---------- .../com/android/quickstep/views/TaskView.java | 19 +++++++++---- 4 files changed, 55 insertions(+), 26 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java b/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java index 76552a3d50..96504afcd4 100644 --- a/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java +++ b/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java @@ -385,4 +385,12 @@ public final class DigitalWellBeingToast { mBanner.setLayerType(View.LAYER_TYPE_HARDWARE, layerPaint); mBanner.setLayerPaint(layerPaint); } + + void setBannerVisibility(int visibility) { + if (mBanner == null) { + return; + } + + mBanner.setVisibility(visibility); + } } diff --git a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java index 44ea0a0b5e..5bc7f18d0c 100644 --- a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java +++ b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java @@ -230,11 +230,12 @@ public class GroupedTaskView extends TaskView { } @Override - protected int getChildTaskIndexAtPosition(PointF position) { - if (isCoordInView(mIconView2, position) || isCoordInView(mSnapshotView2, position)) { + protected int getLastSelectedChildTaskIndex() { + if (isCoordInView(mIconView2, mLastTouchDownPosition) + || isCoordInView(mSnapshotView2, mLastTouchDownPosition)) { return 1; } - return super.getChildTaskIndexAtPosition(position); + return super.getLastSelectedChildTaskIndex(); } private boolean isCoordInView(View v, PointF position) { @@ -336,9 +337,26 @@ public class GroupedTaskView extends TaskView { mSnapshotView2.setSplashAlpha(mTaskThumbnailSplashAlpha); } + /** + * Sets visibility for thumbnails and associated elements (DWB banners). + * IconView is unaffected. + * + * When setting INVISIBLE, sets the visibility for the last selected child task. + * When setting VISIBLE (as a reset), sets the visibility for both tasks. + */ @Override void setThumbnailVisibility(int visibility) { - super.setThumbnailVisibility(visibility); - mSnapshotView2.setVisibility(visibility); + if (visibility == VISIBLE) { + mSnapshotView.setVisibility(visibility); + mDigitalWellBeingToast.setBannerVisibility(visibility); + mSnapshotView2.setVisibility(visibility); + mDigitalWellBeingToast2.setBannerVisibility(visibility); + } else if (getLastSelectedChildTaskIndex() == 0) { + mSnapshotView.setVisibility(visibility); + mDigitalWellBeingToast.setBannerVisibility(visibility); + } else { + mSnapshotView2.setVisibility(visibility); + mDigitalWellBeingToast2.setBannerVisibility(visibility); + } } } diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 6a94094146..aa8f1835d8 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -703,7 +703,7 @@ public abstract class RecentsView RecentsView.this.resetFromSplitSelectionState()); InteractionJankMonitorWrapper.end(InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER); }); - if (containerTaskView.containsMultipleTasks()) { - // If we are launching from a child task, then only hide the thumbnail itself - mSecondSplitHiddenView = thumbnailView; - } else { - mSecondSplitHiddenView = containerTaskView; - } - mSecondSplitHiddenView.setVisibility(INVISIBLE); + + mSecondSplitHiddenView = containerTaskView; + mSecondSplitHiddenView.setThumbnailVisibility(INVISIBLE); + InteractionJankMonitorWrapper.begin(this, InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER, "Second tile selected"); @@ -4278,13 +4275,14 @@ public abstract class RecentsView