From ca009e4e93e6dae7727fdef2d15c87e5a717e777 Mon Sep 17 00:00:00 2001 From: Ats Jenk Date: Fri, 6 Jan 2023 09:52:40 -0800 Subject: [PATCH] Skip depth and scrim if freeform tasks are visible If freeform tasks are shown, skip applying depth effect and scrim changes. These cause the background to flicker while showing freeform tasks and for example showing the transient taskbar. Bug: 263264985 Test: swipe up to show transient taskbar, observe launcher background does not blur or flicker to black Change-Id: I5b10d0f0c7065e903cb761488367c02d7e31d8b2 --- .../android/launcher3/uioverrides/QuickstepLauncher.java | 8 ++++++++ .../launcher3/uioverrides/states/BackgroundAppState.java | 7 +++++++ .../launcher3/uioverrides/states/QuickSwitchState.java | 9 +++++++++ src/com/android/launcher3/Launcher.java | 8 ++++++++ 4 files changed, 32 insertions(+) diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 28c8980668..72f321b5a8 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -1002,6 +1002,14 @@ public class QuickstepLauncher extends Launcher { mPendingSplitSelectInfo = null; } + @Override + public boolean areFreeformTasksVisible() { + if (mDesktopVisibilityController != null) { + return mDesktopVisibilityController.areFreeformTasksVisible(); + } + return false; + } + private static final class LauncherTaskViewController extends TaskViewTouchController { diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java index 733c6a8b48..95eb128e00 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java @@ -28,6 +28,7 @@ import com.android.launcher3.R; import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.launcher3.config.FeatureFlags; import com.android.quickstep.util.LayoutUtils; +import com.android.quickstep.views.DesktopTaskView; import com.android.quickstep.views.RecentsView; /** @@ -91,6 +92,12 @@ public class BackgroundAppState extends OverviewState { @Override protected float getDepthUnchecked(Context context) { + if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (Launcher.getLauncher(context).areFreeformTasksVisible()) { + // Don't blur the background while freeform tasks are visible + return 0; + } + } return 1; } diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java index 969abc2804..739246992c 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java @@ -17,10 +17,13 @@ package com.android.launcher3.uioverrides.states; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND; +import android.graphics.Color; + import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.util.Themes; +import com.android.quickstep.views.DesktopTaskView; /** * State to indicate we are about to launch a recent task. Note that this state is only used when @@ -43,6 +46,12 @@ public class QuickSwitchState extends BackgroundAppState { @Override public int getWorkspaceScrimColor(Launcher launcher) { + if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) { + if (launcher.areFreeformTasksVisible()) { + // No scrim while freeform tasks are visible + return Color.TRANSPARENT; + } + } DeviceProfile dp = launcher.getDeviceProfile(); if (dp.isTaskbarPresentInApps) { return launcher.getColor(R.color.taskbar_background); diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 43772e4279..03ddd6aa33 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -3317,4 +3317,12 @@ public class Launcher extends StatefulActivity return false; // Return false to continue iterating through all the items. }); } + + /** + * Returns {@code true} if there are visible tasks with windowing mode set to + * {@link android.app.WindowConfiguration#WINDOWING_MODE_FREEFORM} + */ + public boolean areFreeformTasksVisible() { + return false; // Base launcher does not track freeform tasks + } }