From 1e29b04f1995290753052ad3bfc7c7a4ebaa1484 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Thu, 16 Mar 2023 19:58:30 +0000 Subject: [PATCH] Set PredictedAppIcon ring disabled when icon is disabled Test: drag a predicted app from taskbar, ensure both ring and icon are set to grayscale Fixes: 268759548 Change-Id: I764ebcd486c09eceaf30c5bd5153a1dd2ff5be72 --- .../launcher3/taskbar/TaskbarDragController.java | 4 ++-- .../launcher3/uioverrides/PredictedAppIcon.java | 15 +++++++++++++++ src/com/android/launcher3/BubbleTextView.java | 9 ++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java index 4e79011ca0..f7e6ee645e 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java @@ -159,7 +159,7 @@ public class TaskbarDragController extends DragController im if (iconShift != null) { dragView.animateShift(-iconShift.x, -iconShift.y); } - btv.getIcon().setIsDisabled(true); + btv.setIconDisabled(true); mControllers.taskbarAutohideSuspendController.updateFlag( TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING, true); }); @@ -453,7 +453,7 @@ public class TaskbarDragController extends DragController im private void maybeOnDragEnd() { if (!isDragging()) { - ((BubbleTextView) mDragObject.originalView).getIcon().setIsDisabled(false); + ((BubbleTextView) mDragObject.originalView).setIconDisabled(false); mControllers.taskbarAutohideSuspendController.updateFlag( TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING, false); mActivity.onDragEnd(); diff --git a/quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java b/quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java index 25207d4382..3990dade70 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java +++ b/quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java @@ -17,6 +17,7 @@ package com.android.launcher3.uioverrides; import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL; import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED; +import static com.android.launcher3.icons.FastBitmapDrawable.getDisabledColorFilter; import android.animation.Animator; import android.animation.AnimatorSet; @@ -54,6 +55,7 @@ import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.GraphicsUtils; import com.android.launcher3.icons.IconNormalizer; import com.android.launcher3.icons.LauncherIcons; +import com.android.launcher3.model.data.ItemInfoWithIcon; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.touch.ItemClickHandler; import com.android.launcher3.touch.ItemLongClickListener; @@ -360,6 +362,19 @@ public class PredictedAppIcon extends DoubleShadowBubbleTextView { canvas.drawPath(mRingPath, mIconRingPaint); } + @Override + public void setIconDisabled(boolean isDisabled) { + super.setIconDisabled(isDisabled); + mIconRingPaint.setColorFilter(isDisabled ? getDisabledColorFilter() : null); + invalidate(); + } + + @Override + protected void setItemInfo(ItemInfoWithIcon itemInfo) { + super.setItemInfo(itemInfo); + setIconDisabled(itemInfo.isDisabled()); + } + @Override public void getSourceVisualDragBounds(Rect bounds) { super.getSourceVisualDragBounds(bounds); diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index ea79c5584d..14f4b30625 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -72,9 +72,9 @@ import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.popup.PopupContainerWithArrow; -import com.android.launcher3.util.MultiTranslateDelegate; import com.android.launcher3.search.StringMatcherUtility; import com.android.launcher3.util.IntArray; +import com.android.launcher3.util.MultiTranslateDelegate; import com.android.launcher3.util.SafeCloseable; import com.android.launcher3.util.ShortcutUtil; import com.android.launcher3.views.ActivityContext; @@ -978,6 +978,13 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, applyCompoundDrawables(icon); } + /** Sets the icon visual state to disabled or not. */ + public void setIconDisabled(boolean isDisabled) { + if (mIcon != null) { + mIcon.setIsDisabled(isDisabled); + } + } + protected boolean iconUpdateAnimationEnabled() { return mEnableIconUpdateAnimation; }