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
This commit is contained in:
Jon Miranda
2022-03-08 16:37:35 -08:00
parent f4f6be6080
commit b42e124f5b
4 changed files with 11 additions and 6 deletions
@@ -1288,8 +1288,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
}
}
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() {
@@ -233,7 +233,8 @@ public class LauncherSwipeHandlerV2 extends
return mActivity.getFirstMatchForAppClose(launchCookieItemId,
runningTaskView.getTask().key.getComponent().getPackageName(),
UserHandle.of(runningTaskView.getTask().key.userId));
UserHandle.of(runningTaskView.getTask().key.userId),
false /* supportsAllAppsState */);
}
@Override
+5 -2
View File
@@ -2743,8 +2743,11 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
* @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) ->
@@ -2755,7 +2758,7 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
&& 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 {
@@ -159,7 +159,8 @@ public class FloatingSurfaceView extends AbstractFloatingView implements
return;
}
View icon = mLauncher.getFirstMatchForAppClose(-1,
mContract.componentName.getPackageName(), mContract.user);
mContract.componentName.getPackageName(), mContract.user,
false /* supportsAllAppsState */);
boolean iconChanged = mIcon != icon;
if (iconChanged) {