diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 793d98704c..11dbe45207 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -43,6 +43,7 @@ import com.android.launcher3.util.OnboardingPrefs; import com.android.quickstep.AnimatedFloat; import com.android.quickstep.RecentsAnimationCallbacks; +import java.io.PrintWriter; import java.util.Arrays; import java.util.Set; import java.util.stream.Stream; @@ -57,7 +58,12 @@ public class LauncherTaskbarUIController extends TaskbarUIController { private final BaseQuickstepLauncher mLauncher; private final DeviceProfile.OnDeviceProfileChangeListener mOnDeviceProfileChangeListener = - this::onStashedInAppChanged; + dp -> { + onStashedInAppChanged(dp); + if (mControllers != null && mControllers.taskbarViewController != null) { + mControllers.taskbarViewController.onRotationChanged(dp); + } + }; // Initialized in init. private AnimatedFloat mTaskbarOverrideBackgroundAlpha; @@ -65,15 +71,6 @@ public class LauncherTaskbarUIController extends TaskbarUIController { private final TaskbarLauncherStateController mTaskbarLauncherStateController = new TaskbarLauncherStateController(); - private final DeviceProfile.OnDeviceProfileChangeListener mProfileChangeListener = - new DeviceProfile.OnDeviceProfileChangeListener() { - @Override - public void onDeviceProfileChanged(DeviceProfile dp) { - mControllers.taskbarViewController.onRotationChanged( - mLauncher.getDeviceProfile()); - } - }; - public LauncherTaskbarUIController(BaseQuickstepLauncher launcher) { mLauncher = launcher; } @@ -93,7 +90,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController { onStashedInAppChanged(mLauncher.getDeviceProfile()); mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener); - mLauncher.addOnDeviceProfileChangeListener(mProfileChangeListener); + } + + public boolean supportsVisualStashing() { + return mControllers.taskbarStashController.supportsVisualStashing(); } @Override @@ -102,9 +102,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController { onLauncherResumedOrPaused(false); mTaskbarLauncherStateController.onDestroy(); - mLauncher.removeOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener); mLauncher.setTaskbarUIController(null); - mLauncher.removeOnDeviceProfileChangeListener(mProfileChangeListener); + mLauncher.removeOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener); updateTaskTransitionSpec(true); } @@ -271,4 +270,16 @@ public class LauncherTaskbarUIController extends TaskbarUIController { // gesture ends, start drawing taskbar's background again since launcher might stop drawing. forceHideBackground(inProgress); } + + @Override + public void dumpLogs(String prefix, PrintWriter pw) { + super.dumpLogs(prefix, pw); + + pw.println(String.format( + "%s\tmTaskbarOverrideBackgroundAlpha=%.2f", + prefix, + mTaskbarOverrideBackgroundAlpha.value)); + + mTaskbarLauncherStateController.dumpLogs(prefix + "\t", pw); + } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java index ff08e3dda7..e4c96b2faa 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java @@ -187,9 +187,12 @@ public class TaskbarControllers { return; } + pw.println(String.format( + "%s\tmAreAllControllersInitialized=%b", prefix, mAreAllControllersInitialized)); for (LoggableTaskbarController controller : mControllersToLog) { controller.dumpLogs(prefix + "\t", pw); } + uiController.dumpLogs(prefix + "\t", pw); rotationButtonController.dumpLogs(prefix + "\t", pw); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 36e642075f..138fb991f4 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -42,7 +42,9 @@ import com.android.quickstep.views.RecentsView; import com.android.systemui.animation.ViewRootSync; import com.android.systemui.shared.recents.model.ThumbnailData; +import java.io.PrintWriter; import java.util.HashMap; +import java.util.StringJoiner; import java.util.function.Consumer; import java.util.function.Supplier; @@ -476,4 +478,48 @@ import java.util.function.Supplier; controller.applyState(); } } + + private static String getStateString(int flags) { + StringJoiner str = new StringJoiner("|"); + str.add((flags & FLAG_RESUMED) != 0 ? "FLAG_RESUMED" : ""); + str.add((flags & FLAG_RECENTS_ANIMATION_RUNNING) != 0 + ? "FLAG_RECENTS_ANIMATION_RUNNING" : ""); + str.add((flags & FLAG_TRANSITION_STATE_RUNNING) != 0 + ? "FLAG_TRANSITION_STATE_RUNNING" : ""); + return str.toString(); + } + + protected void dumpLogs(String prefix, PrintWriter pw) { + pw.println(prefix + "TaskbarLauncherStateController:"); + + pw.println(String.format( + "%s\tmIconAlignmentForResumedState=%.2f", + prefix, + mIconAlignmentForResumedState.value)); + pw.println(String.format( + "%s\tmIconAlignmentForGestureState=%.2f", + prefix, + mIconAlignmentForGestureState.value)); + pw.println(String.format( + "%s\tmIconAlignmentForLauncherState=%.2f", + prefix, + mIconAlignmentForLauncherState.value)); + pw.println(String.format( + "%s\tmTaskbarBackgroundAlpha=%.2f", prefix, mTaskbarBackgroundAlpha.value)); + pw.println(String.format( + "%s\tmIconAlphaForHome=%.2f", prefix, mIconAlphaForHome.getValue())); + pw.println(String.format("%s\tmPrevState=%s", prefix, getStateString(mPrevState))); + pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState))); + pw.println(String.format("%s\tmLauncherState=%s", prefix, mLauncherState)); + pw.println(String.format( + "%s\tmIsAnimatingToLauncherViaGesture=%b", + prefix, + mIsAnimatingToLauncherViaGesture)); + pw.println(String.format( + "%s\tmIsAnimatingToLauncherViaResume=%b", + prefix, + mIsAnimatingToLauncherViaResume)); + pw.println(String.format( + "%s\tmShouldDelayLauncherStateAnim=%b", prefix, mShouldDelayLauncherStateAnim)); + } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index f34759d700..c92feed46f 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -275,7 +275,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba return !mIsStashed && isInApp(); } - private boolean isInApp() { + public boolean isInApp() { return hasAnyFlag(FLAGS_IN_APP); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java index d5c399b619..6c2d179510 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java @@ -22,6 +22,7 @@ import androidx.annotation.CallSuper; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; +import java.io.PrintWriter; import java.util.stream.Stream; /** @@ -86,4 +87,12 @@ public class TaskbarUIController { stashController.applyState(); } } + + @CallSuper + protected void dumpLogs(String prefix, PrintWriter pw) { + pw.println(String.format( + "%sTaskbarUIController: using an instance of %s", + prefix, + getClass().getSimpleName())); + } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index 6416720962..6967cc5969 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -289,10 +289,12 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } public void onRotationChanged(DeviceProfile deviceProfile) { - if (areIconsVisible()) { + if (mControllers.taskbarStashController.isInApp()) { // We only translate on rotation when on home return; } + mActivity.setTaskbarWindowHeight( + deviceProfile.taskbarSize + deviceProfile.getTaskbarOffsetY()); mTaskbarNavButtonTranslationY.updateValue(-deviceProfile.getTaskbarOffsetY()); } diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java index 236454e161..2ec8d9db65 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java @@ -22,10 +22,12 @@ import android.content.Context; import android.graphics.Rect; import android.os.SystemProperties; +import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; import com.android.launcher3.R; +import com.android.launcher3.taskbar.LauncherTaskbarUIController; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.Themes; import com.android.quickstep.util.LayoutUtils; @@ -93,7 +95,13 @@ public class OverviewState extends LauncherState { @Override public boolean isTaskbarStashed(Launcher launcher) { - return true; + if (launcher instanceof BaseQuickstepLauncher) { + LauncherTaskbarUIController uiController = + ((BaseQuickstepLauncher) launcher).getTaskbarUIController(); + + return uiController != null && uiController.supportsVisualStashing(); + } + return super.isTaskbarStashed(launcher); } @Override