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

Commit adce9539 authored by Andy Wickham's avatar Andy Wickham
Browse files

Enable returning to the previous app after Overview -> All Apps.

Back gesture from All Apps (history for state):
If previous state was background, use quick switch state to return
to the previous app.

Swipe down from All Apps:
Return to previous state (which will be Normal or Quick Switch).

This animates from All Apps overview scale/translation to full
screen of the previous task. In this case we are animating from
0.5x Overview scale and 0 translation (centered).

Video: https://drive.google.com/file/d/1cpQjtFemtJ4zu9aWu7IiUftWWVGFrbtM/view?usp=drive_link&resourcekey=0-1zuMEvYNsk81YBxv8o10hA

Note: This is mostly for the gesture/state handling but it would
be nice to polish this transition in the future.

Bug: 283336332
Test: Manual
Flag: ENABLE_ALL_APPS_FROM_OVERVIEW
Change-Id: Iec92df933ce6522f181d3d5ca889b6a6469f4cc6
parent 38865c3f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -525,7 +525,7 @@ public class QuickstepLauncher extends Launcher {
            }
            case QUICK_SWITCH_STATE_ORDINAL: {
                RecentsView rv = getOverviewPanel();
                TaskView tasktolaunch = rv.getTaskViewAt(0);
                TaskView tasktolaunch = rv.getCurrentPageTaskView();
                if (tasktolaunch != null) {
                    tasktolaunch.launchTask(success -> {
                        if (!success) {
+14 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.Context;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.R;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.util.Themes;
import com.android.launcher3.views.ActivityContext;

@@ -110,7 +111,19 @@ public class AllAppsState extends LauncherState {

    @Override
    public LauncherState getHistoryForState(LauncherState previousState) {
        return previousState == OVERVIEW ? OVERVIEW : NORMAL;
        return previousState == BACKGROUND_APP ? QUICK_SWITCH_FROM_HOME
                : previousState == OVERVIEW ? OVERVIEW : NORMAL;
    }

    @Override
    public float[] getOverviewScaleAndOffset(Launcher launcher) {
        if (!FeatureFlags.ENABLE_ALL_APPS_FROM_OVERVIEW.get()) {
            return super.getOverviewScaleAndOffset(launcher);
        }
        // This handles the case of returning to the previous app from Overview -> All Apps gesture.
        // This is the start scale/offset of overview that will be used for that transition.
        // TODO (b/283336332): Translate in Y direction (ideally with overview resistance).
        return new float[] {0.5f /* scale */, NO_OFFSET};
    }

    @Override
+4 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.allapps.AllAppsTransitionController;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.states.StateAnimationConfig;
import com.android.launcher3.touch.AbstractStateChangeTouchController;
import com.android.launcher3.touch.AllAppsSwipeController;
@@ -92,7 +93,9 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr
    @Override
    protected LauncherState getTargetState(LauncherState fromState, boolean isDragTowardPositive) {
        if (fromState == ALL_APPS && !isDragTowardPositive) {
            return NORMAL;
            return FeatureFlags.ENABLE_ALL_APPS_FROM_OVERVIEW.get()
                    ? mLauncher.getStateManager().getLastState()
                    : NORMAL;
        } else if (fromState == OVERVIEW) {
            return isDragTowardPositive ? OVERVIEW : NORMAL;
        } else if (fromState == NORMAL && isDragTowardPositive) {