From 3bce15d2a2561e17652a8037581902d9cad7d26d Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Sat, 18 Feb 2023 06:34:08 +0000 Subject: [PATCH] Fix issue with global drag from taskbar being disabled - BackgroundAppState extends OverviewState, so in some cases we will transition to background app, which inadvertently triggers global drag and drop from being enabled Bug: 269819279 Test: Enter split, cycle the screen and try to drag an app from the transient bar Change-Id: I0e8c5e8bbaa0220fc870d2db866152864253010f --- .../taskbar/TaskbarLauncherStateController.java | 6 ++---- .../uioverrides/states/BackgroundAppState.java | 12 ++++++++++++ .../uioverrides/states/OverviewState.java | 12 ++++++++++++ src/com/android/launcher3/LauncherState.java | 14 ++++++++++++++ 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 80cdbe98cb..9fd406d979 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -39,7 +39,6 @@ import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.anim.AnimatorListeners; import com.android.launcher3.statemanager.StateManager; import com.android.launcher3.uioverrides.QuickstepLauncher; -import com.android.launcher3.uioverrides.states.OverviewState; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; import com.android.quickstep.RecentsAnimationCallbacks; import com.android.quickstep.RecentsAnimationController; @@ -119,11 +118,10 @@ import java.util.StringJoiner; mLauncherState = finalState; updateStateForFlag(FLAG_TRANSITION_STATE_RUNNING, false); applyState(); - boolean finalStateOverview = finalState instanceof OverviewState; boolean disallowLongClick = finalState == LauncherState.OVERVIEW_SPLIT_SELECT; com.android.launcher3.taskbar.Utilities.setOverviewDragState( - mControllers, finalStateOverview /*disallowGlobalDrag*/, - disallowLongClick, finalStateOverview /*allowInitialSplitSelection*/); + mControllers, finalState.disallowTaskbarGlobalDrag(), + disallowLongClick, finalState.allowTaskbarInitialSplitSelection()); } }; diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java index 95eb128e00..8125fc8f3e 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java @@ -116,6 +116,18 @@ public class BackgroundAppState extends OverviewState { return super.isTaskbarAlignedWithHotseat(launcher); } + @Override + public boolean disallowTaskbarGlobalDrag() { + // Enable global drag in overview + return false; + } + + @Override + public boolean allowTaskbarInitialSplitSelection() { + // Disallow split select from taskbar items in overview + return false; + } + public static float[] getOverviewScaleAndOffsetForBackgroundState( BaseDraggingActivity activity) { return new float[] { diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java index d075750330..233ed462c9 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java @@ -123,6 +123,18 @@ public class OverviewState extends LauncherState { return deviceProfile.isTablet; } + @Override + public boolean disallowTaskbarGlobalDrag() { + // Disable global drag in overview + return true; + } + + @Override + public boolean allowTaskbarInitialSplitSelection() { + // Allow split select from taskbar items in overview + return true; + } + @Override public String getDescription(Launcher launcher) { return launcher.getString(R.string.accessibility_recent_apps); diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java index 81fbe79cb2..b8d13ed488 100644 --- a/src/com/android/launcher3/LauncherState.java +++ b/src/com/android/launcher3/LauncherState.java @@ -225,6 +225,20 @@ public abstract class LauncherState implements BaseState { return true; } + /** + * Returns whether taskbar global drag is disallowed in this state. + */ + public boolean disallowTaskbarGlobalDrag() { + return false; + } + + /** + * Returns whether the taskbar shortcut should trigger split selection mode. + */ + public boolean allowTaskbarInitialSplitSelection() { + return false; + } + /** * Fraction shift in the vertical translation UI and related properties *