Use pinned taskbar with desktop tasks on freeform displays
Bug: 390665752
Flag: com.android.window.flags.enable_desktop_taskbar_on_freeform_displays
Test: manual on desktop device. verify correct taskbar is shown
on home screen, in overview, in desktop mode, with fullscreen
app shown. Verify opening/launching apps from taskbar works
as expected.
Change-Id: I5c1e21799609c28ec44cc190bfc681934907199f
This commit is contained in:
@@ -50,8 +50,9 @@ class TaskbarDesktopModeController(
|
||||
|
||||
fun shouldShowDesktopTasksInTaskbar(): Boolean {
|
||||
return desktopVisibilityController.areDesktopTasksVisible() ||
|
||||
DisplayController.showLockedTaskbarOnHome(context) &&
|
||||
taskbarControllers.taskbarStashController.isOnHome
|
||||
DisplayController.showDesktopTaskbarForFreeformDisplay(context) ||
|
||||
(DisplayController.showLockedTaskbarOnHome(context) &&
|
||||
taskbarControllers.taskbarStashController.isOnHome)
|
||||
}
|
||||
|
||||
fun getTaskbarCornerRoundness(doesAnyTaskRequireTaskbarRounding: Boolean): Float {
|
||||
|
||||
@@ -58,7 +58,6 @@ import com.android.launcher3.QuickstepTransitionManager;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.AnimatedFloat;
|
||||
import com.android.launcher3.anim.AnimatorListeners;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.statemanager.StateManager;
|
||||
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.BubbleLauncherState;
|
||||
import com.android.launcher3.uioverrides.QuickstepLauncher;
|
||||
@@ -714,6 +713,10 @@ public class TaskbarLauncherStateController {
|
||||
|
||||
private static boolean shouldShowTaskbar(Context context, boolean isInLauncher,
|
||||
boolean isInOverview) {
|
||||
if (DisplayController.showDesktopTaskbarForFreeformDisplay(context)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (DisplayController.showLockedTaskbarOnHome(context) && isInLauncher) {
|
||||
return true;
|
||||
}
|
||||
@@ -769,9 +772,14 @@ public class TaskbarLauncherStateController {
|
||||
* This refers to the intended state - a transition to this state might be in progress.
|
||||
*/
|
||||
public boolean isTaskbarAlignedWithHotseat() {
|
||||
if (DisplayController.showDesktopTaskbarForFreeformDisplay(mLauncher)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (DisplayController.showLockedTaskbarOnHome(mLauncher) && isInLauncher()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return mLauncherState.isTaskbarAlignedWithHotseat(mLauncher);
|
||||
}
|
||||
|
||||
|
||||
@@ -301,7 +301,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
// TODO(b/390665752): Feature to "lock" pinned taskbar to home screen will be superseded by
|
||||
// pinning, in other launcher states, at which point this variable can be removed.
|
||||
mInAppStateAffectsDesktopTasksVisibilityInTaskbar =
|
||||
DisplayController.showLockedTaskbarOnHome(mActivity);
|
||||
!DisplayController.showDesktopTaskbarForFreeformDisplay(mActivity)
|
||||
&& DisplayController.showLockedTaskbarOnHome(mActivity);
|
||||
|
||||
mTaskbarBackgroundDuration = activity.getResources().getInteger(
|
||||
R.integer.taskbar_background_duration);
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.android.launcher3.util.WindowBounds;
|
||||
import com.android.launcher3.util.window.CachedDisplayInfo;
|
||||
import com.android.launcher3.util.window.WindowManagerProxy;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.window.flags.Flags;
|
||||
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
|
||||
|
||||
import java.util.List;
|
||||
@@ -89,6 +90,25 @@ public class SystemWindowManagerProxy extends WindowManagerProxy {
|
||||
return isFreeformDisplay;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showDesktopTaskbarForFreeformDisplay(Context displayInfoContext) {
|
||||
if (!DesktopModeStatus.canEnterDesktopMode(displayInfoContext)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!DesktopModeStatus.enterDesktopByDefaultOnFreeformDisplay(displayInfoContext)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Flags.enableDesktopTaskbarOnFreeformDisplays()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
final boolean isFreeformDisplay = displayInfoContext.getResources().getConfiguration()
|
||||
.windowConfiguration.getWindowingMode() == WINDOWING_MODE_FREEFORM;
|
||||
return isFreeformDisplay;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHomeVisible(Context context) {
|
||||
return SystemUiProxy.INSTANCE.get(context).getHomeVisibilityState().isHomeVisible();
|
||||
|
||||
Reference in New Issue
Block a user