Merge "UI Improvement: Fix unexpected progress bar around app icon added to Workspace after unarchival." into main
diff --git a/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt b/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt
index b2497a3..ce354b6 100644
--- a/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt
+++ b/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt
@@ -112,7 +112,6 @@
appIcon2?.setBounds(0, 0, memberIconSize.toInt(), memberIconSize.toInt())
}
-
/** Gets this icon graphic's bounds, with respect to the parent icon's coordinate system. */
fun getIconBounds(outBounds: Rect) {
outBounds.set(0, 0, backgroundSize.toInt(), backgroundSize.toInt())
@@ -138,15 +137,8 @@
// Draw background
appPairBackground.draw(canvas)
- // Make sure icons are loaded
- if (
- appIcon1 == null ||
- appIcon2 == null ||
- appIcon1 is PlaceHolderIconDrawable ||
- appIcon2 is PlaceHolderIconDrawable
- ) {
- applyIcons(parentIcon.info.contents)
- }
+ // Make sure icons are loaded and fresh
+ applyIcons(parentIcon.info.contents)
// Draw first icon
canvas.save()
diff --git a/src/com/android/launcher3/model/data/FolderInfo.java b/src/com/android/launcher3/model/data/FolderInfo.java
index 5b541d0..83ba2b3 100644
--- a/src/com/android/launcher3/model/data/FolderInfo.java
+++ b/src/com/android/launcher3/model/data/FolderInfo.java
@@ -371,4 +371,13 @@
}
return LauncherAtom.ToState.TO_STATE_UNSPECIFIED;
}
+
+ @Override
+ public boolean isDisabled() {
+ if (itemType == LauncherSettings.Favorites.ITEM_TYPE_APP_PAIR) {
+ return contents.stream().anyMatch((WorkspaceItemInfo::isDisabled));
+ }
+
+ return super.isDisabled();
+ }
}
diff --git a/src/com/android/launcher3/touch/ItemClickHandler.java b/src/com/android/launcher3/touch/ItemClickHandler.java
index 9d50e6a..f47ab90 100644
--- a/src/com/android/launcher3/touch/ItemClickHandler.java
+++ b/src/com/android/launcher3/touch/ItemClickHandler.java
@@ -149,7 +149,20 @@
private static void onClickAppPairIcon(View v) {
Launcher launcher = Launcher.getLauncher(v.getContext());
AppPairIcon appPairIcon = (AppPairIcon) v;
- launcher.launchAppPair(appPairIcon);
+ if (appPairIcon.getInfo().isDisabled()) {
+ WorkspaceItemInfo app1 = appPairIcon.getInfo().contents.get(0);
+ WorkspaceItemInfo app2 = appPairIcon.getInfo().contents.get(1);
+ // Show the user why the app pair is disabled.
+ if (app1.isDisabled() && !handleDisabledItemClicked(app1, launcher)) {
+ // If handleDisabledItemClicked() did not handle the error message, we initiate an
+ // app launch so Framework can tell the user why the app is suspended.
+ onClickAppShortcut(v, app1, launcher);
+ } else if (app2.isDisabled() && !handleDisabledItemClicked(app2, launcher)) {
+ onClickAppShortcut(v, app2, launcher);
+ }
+ } else {
+ launcher.launchAppPair(appPairIcon);
+ }
}
/**