diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 06fd66021d..7340559ad4 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -37,6 +37,7 @@ import com.android.quickstep.AnimatedFloat; import com.android.quickstep.RecentsAnimationCallbacks; import com.android.quickstep.RecentsAnimationCallbacks.RecentsAnimationListener; import com.android.quickstep.RecentsAnimationController; +import com.android.quickstep.SystemUiProxy; import com.android.systemui.shared.recents.model.ThumbnailData; @@ -152,6 +153,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController { TaskbarStashController stashController = mControllers.taskbarStashController; stashController.animateToIsStashed(stashController.isStashedInApp(), duration); } + SystemUiProxy.INSTANCE.get(mContext).notifyTaskbarStatus(!isResumed, + mControllers.taskbarStashController.isStashedInApp()); } /** diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 788a36b31a..a226db9f98 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -36,6 +36,7 @@ import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.DisplayController.Info; import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.SysUINavigationMode.Mode; +import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TouchInteractionService; /** @@ -127,16 +128,19 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen private void recreateTaskbar() { destroyExistingTaskbar(); - if (!FeatureFlags.ENABLE_TASKBAR.get()) { - return; - } - if (!mUserUnlocked) { - return; - } - DeviceProfile dp = LauncherAppState.getIDP(mContext).getDeviceProfile(mContext); - if (!dp.isTaskbarPresent) { + + DeviceProfile dp = + mUserUnlocked ? LauncherAppState.getIDP(mContext).getDeviceProfile(mContext) : null; + + boolean isTaskBarEnabled = + FeatureFlags.ENABLE_TASKBAR.get() && dp != null && dp.isTaskbarPresent; + + if (!isTaskBarEnabled) { + SystemUiProxy.INSTANCE.get(mContext) + .notifyTaskbarStatus(/* visible */ false, /* stashed */ false); return; } + mTaskbarActivityContext = new TaskbarActivityContext( mContext, dp.copy(mContext), mNavButtonController); mTaskbarActivityContext.init(); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index 57600d7356..6e20398174 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -28,6 +28,7 @@ import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.util.MultiValueAlpha.AlphaProperty; import com.android.quickstep.AnimatedFloat; +import com.android.quickstep.SystemUiProxy; /** * Coordinates between controllers such as TaskbarViewController and StashedHandleViewController to @@ -104,6 +105,9 @@ public class TaskbarStashController { mIsStashedInApp = supportsStashing() && mPrefs.getBoolean(SHARED_PREFS_STASHED_KEY, DEFAULT_STASHED_PREF); + + SystemUiProxy.INSTANCE.get(mActivity) + .notifyTaskbarStatus(/* visible */ true, /* stashed */ mIsStashedInApp); } /** @@ -166,6 +170,8 @@ public class TaskbarStashController { mPrefs.edit().putBoolean(SHARED_PREFS_STASHED_KEY, mIsStashedInApp).apply(); boolean isStashed = mIsStashedInApp; if (wasStashed != isStashed) { + SystemUiProxy.INSTANCE.get(mActivity) + .notifyTaskbarStatus(/* visible */ true, /* stashed */ isStashed); createAnimToIsStashed(isStashed, TASKBAR_STASH_DURATION).start(); return true; } diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java index d6b95c13ab..dac6981583 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.java +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java @@ -399,6 +399,18 @@ public class SystemUiProxy implements ISystemUiProxy, } } + @Override + public void notifyTaskbarStatus(boolean visible, boolean stashed) { + if (mSystemUiProxy != null) { + try { + mSystemUiProxy.notifyTaskbarStatus(visible, stashed); + } catch (RemoteException e) { + Log.w(TAG, "Failed call notifyTaskbarStatus with arg: " + + visible + ", " + stashed, e); + } + } + } + @Override public void handleImageBundleAsScreenshot(Bundle screenImageBundle, Rect locationInScreen, Insets visibleInsets, Task.TaskKey task) { diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index d03ea1d83a..efac7750d0 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -2495,14 +2495,11 @@ public abstract class RecentsView extends ViewGrou @ViewDebug.ExportedProperty(category = "launcher") protected int mCurrentPage; - // Difference between current scroll position and mCurrentPage's page scroll. Used to maintain - // relative scroll position unchanged in updateCurrentPageScroll. Cleared when snapping to a - // page. - protected int mCurrentPageScrollDiff; @ViewDebug.ExportedProperty(category = "launcher") protected int mNextPage = INVALID_PAGE; @@ -251,7 +247,7 @@ public abstract class PagedView extends ViewGrou // If the current page is invalid, just reset the scroll position to zero int newPosition = 0; if (0 <= mCurrentPage && mCurrentPage < getPageCount()) { - newPosition = getScrollForPage(mCurrentPage) + mCurrentPageScrollDiff; + newPosition = getScrollForPage(mCurrentPage); } mOrientationHandler.set(this, VIEW_SCROLL_TO, newPosition); mScroller.startScroll(mScroller.getCurrX(), 0, newPosition - mScroller.getCurrX(), 0); @@ -456,7 +452,6 @@ public abstract class PagedView extends ViewGrou * to provide custom behavior during animation. */ protected void onPageEndTransition() { - mCurrentPageScrollDiff = 0; AccessibilityManagerCompat.sendScrollFinishedEventToTest(getContext()); AccessibilityManagerCompat.sendCustomAccessibilityEvent(getPageAt(mCurrentPage), AccessibilityEvent.TYPE_VIEW_FOCUSED, null);