Never look for matching view in All Apps when swiping up to go home.
The swiping up gesture will never return an app in All Apps,
so we can ignore All Apps state in those cases.
This fixes an edge case where user swipes up and launcher state
is still in All Apps. This causes us to animate the icon to
where it would be in All Apps, even though by the time the
animation starts we are actually in Normal state.
Bug: 222124240
Test: open app from all apps then quickly swipe up to go home
Change-Id: I756a870660a397d6629aec82e4f5ec4914ed0669
(cherry picked from commit b42e124f5b189eb28d7dd2694ef6dab77985aa07)
diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
index 49b2cc5..8339985 100644
--- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
+++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
@@ -1274,8 +1274,8 @@
}
}
- return mLauncher.getFirstMatchForAppClose(launchCookieItemId,
- packageName, UserHandle.of(runningTaskTarget.taskInfo.userId));
+ return mLauncher.getFirstMatchForAppClose(launchCookieItemId, packageName,
+ UserHandle.of(runningTaskTarget.taskInfo.userId), true /* supportsAllAppsState */);
}
private @NonNull RectF getDefaultWindowTargetRect() {
diff --git a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
index a72935b..4fb03c4 100644
--- a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
+++ b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
@@ -246,7 +246,8 @@
return mActivity.getFirstMatchForAppClose(launchCookieItemId,
runningTaskView.getTask().key.getComponent().getPackageName(),
- UserHandle.of(runningTaskView.getTask().key.userId));
+ UserHandle.of(runningTaskView.getTask().key.userId),
+ false /* supportsAllAppsState */);
}
@Override
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 81a0d5b..307b9e7 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2688,8 +2688,11 @@
* @param preferredItemId The id of the preferred item to match to if it exists.
* @param packageName The package name of the app to match.
* @param user The user of the app to match.
+ * @param supportsAllAppsState If true and we are in All Apps state, looks for view in All Apps.
+ * Else we only looks on the workspace.
*/
- public View getFirstMatchForAppClose(int preferredItemId, String packageName, UserHandle user) {
+ public View getFirstMatchForAppClose(int preferredItemId, String packageName, UserHandle user,
+ boolean supportsAllAppsState) {
final ItemInfoMatcher preferredItem = (info, cn) ->
info != null && info.id == preferredItemId;
final ItemInfoMatcher packageAndUserAndApp = (info, cn) ->
@@ -2700,7 +2703,7 @@
&& TextUtils.equals(info.getTargetComponent().getPackageName(),
packageName);
- if (isInState(LauncherState.ALL_APPS)) {
+ if (supportsAllAppsState && isInState(LauncherState.ALL_APPS)) {
return getFirstMatch(Collections.singletonList(mAppsView.getActiveRecyclerView()),
preferredItem, packageAndUserAndApp);
} else {
diff --git a/src/com/android/launcher3/views/FloatingSurfaceView.java b/src/com/android/launcher3/views/FloatingSurfaceView.java
index f32f904..09c8c64 100644
--- a/src/com/android/launcher3/views/FloatingSurfaceView.java
+++ b/src/com/android/launcher3/views/FloatingSurfaceView.java
@@ -159,7 +159,8 @@
return;
}
View icon = mLauncher.getFirstMatchForAppClose(-1,
- mContract.componentName.getPackageName(), mContract.user);
+ mContract.componentName.getPackageName(), mContract.user,
+ false /* supportsAllAppsState */);
boolean iconChanged = mIcon != icon;
if (iconChanged) {