Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12d8747d authored by Brian Isganitis's avatar Brian Isganitis Committed by Automerger Merge Worker
Browse files

Defer unstashing taskbar on all apps close if gesture in progress. am: 4ad53f12

parents 00789f97 4ad53f12
Loading
Loading
Loading
Loading
+30 −2
Original line number Diff line number Diff line
@@ -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.
     */
+1 −1
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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);
        });
    }
}