From ef03a149800b52fa8d1f863d79e7b7572f2484a5 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 8 Feb 2023 21:37:40 +0000 Subject: [PATCH] Making taskbar to stay stashed if user launches app for split screen view from all apps view Test: Visual Fix: 263058045 Change-Id: Idcbc4ce90e8d4ff1084780bf331f2cea8b9335ca --- .../taskbar/LauncherTaskbarUIController.java | 1 + .../launcher3/taskbar/TaskbarActivityContext.java | 7 ++++--- .../launcher3/taskbar/TaskbarUIController.java | 12 ++++++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 335482c854..667fb0b33b 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -310,6 +310,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { @Override public void onTaskbarIconLaunched(ItemInfo item) { + super.onTaskbarIconLaunched(item); InstanceId instanceId = new InstanceIdSequence().newInstanceId(); mLauncher.logAppLaunch(mControllers.taskbarActivityContext.getStatsLogManager(), item, instanceId); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index c6d8fce99b..8916ba2837 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -15,7 +15,6 @@ */ package com.android.launcher3.taskbar; -import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.content.pm.PackageManager.FEATURE_PC; import static android.os.Trace.TRACE_TAG_APP; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; @@ -829,15 +828,17 @@ public class TaskbarActivityContext extends BaseTaskbarContext { launchFromTaskbarPreservingSplitIfVisible(recents, info); } - mControllers.uiController.onTaskbarIconLaunched(info); } catch (NullPointerException | ActivityNotFoundException | SecurityException e) { Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT) .show(); Log.e(TAG, "Unable to launch. tag=" + info + " intent=" + intent, e); + return; } + } + mControllers.uiController.onTaskbarIconLaunched(info); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } } else if (tag instanceof AppInfo) { @@ -851,8 +852,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { taskbarUIController.triggerSecondAppForSplit(info, info.intent, view); } else { launchFromTaskbarPreservingSplitIfVisible(recents, info); - mControllers.uiController.onTaskbarIconLaunched(info); } + mControllers.uiController.onTaskbarIconLaunched(info); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } else if (tag instanceof ItemClickProxy) { ((ItemClickProxy) tag).onItemClicked(view); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java index bfdf156dbd..749556dce9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java @@ -17,6 +17,8 @@ package com.android.launcher3.taskbar; import static android.app.ActivityTaskManager.INVALID_TASK_ID; +import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP; + import android.content.Intent; import android.graphics.drawable.BitmapDrawable; import android.view.MotionEvent; @@ -73,7 +75,13 @@ public class TaskbarUIController { protected void onStashedInAppChanged() { } /** Called when an icon is launched. */ - public void onTaskbarIconLaunched(ItemInfo item) { } + @CallSuper + public void onTaskbarIconLaunched(ItemInfo item) { + // When launching from Taskbar, e.g. from Overview, set FLAG_IN_APP immediately instead of + // waiting for onPause, to reduce potential visual noise during the app open transition. + mControllers.taskbarStashController.updateStateForFlag(FLAG_IN_APP, true); + mControllers.taskbarStashController.applyState(); + } public View getRootView() { return mControllers.taskbarActivityContext.getDragLayer(); @@ -103,7 +111,7 @@ public class TaskbarUIController { public void onExpandPip() { if (mControllers != null) { final TaskbarStashController stashController = mControllers.taskbarStashController; - stashController.updateStateForFlag(TaskbarStashController.FLAG_IN_APP, true); + stashController.updateStateForFlag(FLAG_IN_APP, true); stashController.applyState(); } }