Defer unstashing taskbar on all apps close if gesture in progress.
This behavior is more consistent with how we update taskbar stashing when IME is dismissed. Test: Verified stashing behavior with gestures, 3-button, and bottom sheet dismiss. Fix: 223837786 Change-Id: Ib85ebe629f33f0bddc36bbc8d99136711105b279
This commit is contained in:
@@ -33,6 +33,7 @@ import android.view.ViewConfiguration;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.taskbar.allapps.TaskbarAllAppsSlideInView;
|
||||
import com.android.launcher3.testing.TestProtocol;
|
||||
import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
|
||||
import com.android.quickstep.AnimatedFloat;
|
||||
@@ -518,13 +519,40 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
*/
|
||||
public void setSystemGestureInProgress(boolean inProgress) {
|
||||
mIsSystemGestureInProgress = inProgress;
|
||||
// Only update FLAG_STASHED_IN_APP_IME when system gesture is not in progress.
|
||||
if (!mIsSystemGestureInProgress) {
|
||||
if (mIsSystemGestureInProgress) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Only update the following flags when system gesture is not in progress.
|
||||
maybeResetStashedInAppAllApps(hasAnyFlag(FLAG_STASHED_IN_APP_IME) == mIsImeShowing);
|
||||
if (hasAnyFlag(FLAG_STASHED_IN_APP_IME) != mIsImeShowing) {
|
||||
updateStateForFlag(FLAG_STASHED_IN_APP_IME, mIsImeShowing);
|
||||
applyState(TASKBAR_STASH_DURATION_FOR_IME, getTaskbarStashStartDelayForIme());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset stashed in all apps only if no system gesture is in progress.
|
||||
* <p>
|
||||
* Otherwise, the reset should be deferred until after the gesture is finished.
|
||||
*
|
||||
* @see #setSystemGestureInProgress
|
||||
*/
|
||||
public void maybeResetStashedInAppAllApps() {
|
||||
maybeResetStashedInAppAllApps(true);
|
||||
}
|
||||
|
||||
private void maybeResetStashedInAppAllApps(boolean applyState) {
|
||||
if (mIsSystemGestureInProgress) {
|
||||
return;
|
||||
}
|
||||
|
||||
updateStateForFlag(FLAG_STASHED_IN_APP_ALL_APPS, false);
|
||||
if (applyState) {
|
||||
applyState(TaskbarAllAppsSlideInView.DEFAULT_CLOSE_DURATION);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* When hiding the IME, delay the unstash animation to align with the end of the transition.
|
||||
*/
|
||||
|
||||
@@ -34,7 +34,7 @@ import java.util.Optional;
|
||||
public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarAllAppsContext>
|
||||
implements Insettable, DeviceProfile.OnDeviceProfileChangeListener {
|
||||
static final int DEFAULT_OPEN_DURATION = 500;
|
||||
static final int DEFAULT_CLOSE_DURATION = 200;
|
||||
public static final int DEFAULT_CLOSE_DURATION = 200;
|
||||
|
||||
private TaskbarAllAppsContainerView mAppsView;
|
||||
private OnCloseListener mOnCloseBeginListener;
|
||||
|
||||
+3
-4
@@ -16,7 +16,6 @@
|
||||
package com.android.launcher3.taskbar.allapps;
|
||||
|
||||
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_APP_ALL_APPS;
|
||||
import static com.android.launcher3.taskbar.allapps.TaskbarAllAppsSlideInView.DEFAULT_CLOSE_DURATION;
|
||||
import static com.android.launcher3.taskbar.allapps.TaskbarAllAppsSlideInView.DEFAULT_OPEN_DURATION;
|
||||
import static com.android.launcher3.util.OnboardingPrefs.ALL_APPS_VISITED_COUNT;
|
||||
|
||||
@@ -86,9 +85,9 @@ final class TaskbarAllAppsViewController {
|
||||
mSlideInView.setOnCloseBeginListener(() -> {
|
||||
AbstractFloatingView.closeOpenContainer(
|
||||
mContext, AbstractFloatingView.TYPE_ACTION_POPUP);
|
||||
mTaskbarStashController.updateStateForFlag(
|
||||
FLAG_STASHED_IN_APP_ALL_APPS, false);
|
||||
mTaskbarStashController.applyState(DEFAULT_CLOSE_DURATION);
|
||||
// Post in case view is closing due to gesture navigation. If a gesture is in progress,
|
||||
// wait to unstash until after the gesture is finished.
|
||||
mSlideInView.post(mTaskbarStashController::maybeResetStashedInAppAllApps);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user