From 3b63408ad1fdcb3ad772b9298315134134012d22 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Tue, 19 Mar 2024 10:48:15 -0700 Subject: [PATCH] Call setOverviewDragState() whenever taskbar is recreated * Un/Pinning taskbar re-creates controllers which led to stale state for checking if we are allowing split selection Test: Crash/immediately going into split no longer repros after un/pinning taskbar in overview and trying to split Fixes: 326356246 Change-Id: I06cfc4d1c3c7fe071f04414c3134eaff7960ade6 (cherry picked from commit 0adca26744fe6f5666c7b29e3a48a336a332484e) --- .../TaskbarLauncherStateController.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 8d8371651a..259af1d53a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -205,13 +205,7 @@ public class TaskbarLauncherStateController { mLauncherState = finalState; updateStateForFlag(FLAG_LAUNCHER_IN_STATE_TRANSITION, false); applyState(); - boolean disallowLongClick = - FeatureFlags.enableSplitContextually() - ? mLauncher.isSplitSelectionActive() - : finalState == LauncherState.OVERVIEW_SPLIT_SELECT; - com.android.launcher3.taskbar.Utilities.setOverviewDragState( - mControllers, finalState.disallowTaskbarGlobalDrag(), - disallowLongClick, finalState.allowTaskbarInitialSplitSelection()); + updateOverviewDragState(finalState); } }; @@ -256,6 +250,7 @@ public class TaskbarLauncherStateController { mCanSyncViews = true; mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener); + updateOverviewDragState(mLauncherState); } public void onDestroy() { @@ -328,7 +323,7 @@ public class TaskbarLauncherStateController { updateStateForSysuiFlags(systemUiStateFlags, /* applyState */ true); } - private void updateStateForSysuiFlags(int systemUiStateFlags, boolean applyState) { + private void updateStateForSysuiFlags(int systemUiStateFlags, boolean applyState) { final boolean prevIsAwake = hasAnyFlag(FLAG_AWAKE); final boolean currIsAwake = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_AWAKE); @@ -357,6 +352,21 @@ public class TaskbarLauncherStateController { } } + /** + * Updates overview drag state on various controllers based on {@link #mLauncherState}. + * + * @param launcherState The current state launcher is in + */ + private void updateOverviewDragState(LauncherState launcherState) { + boolean disallowLongClick = + FeatureFlags.enableSplitContextually() + ? mLauncher.isSplitSelectionActive() + : launcherState == LauncherState.OVERVIEW_SPLIT_SELECT; + com.android.launcher3.taskbar.Utilities.setOverviewDragState( + mControllers, launcherState.disallowTaskbarGlobalDrag(), + disallowLongClick, launcherState.allowTaskbarInitialSplitSelection()); + } + /** * Updates the proper flag to change the state of the task bar. *