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

Commit 21893824 authored by Andrii Kulian's avatar Andrii Kulian
Browse files

Don't update task to return to type for last task over home

Resizing docked stack to fullscreen size results in dismissal
of docked stack and moving of tasks to fullscreen stack.
When tasks, which were originally launched from home or recents,
are inserted on top of fullscreen stack, their mTaskToReturnTo
value was overwritten.
This CL doesn't allow to overwrite this field of task if there
is no next task in stack and it was launched from home or recents.

Bug: 29237751
Change-Id: If56cd3f68b6b400c2d5c945431371acfe6269682
parent d25c718a
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -2581,11 +2581,14 @@ final class ActivityStack {
    }

    private void insertTaskAtTop(TaskRecord task, ActivityRecord newActivity) {
        boolean isLastTaskOverHome = false;
        // If the moving task is over home stack, transfer its return type to next task
        if (task.isOverHomeStack()) {
            final TaskRecord nextTask = getNextTask(task);
            if (nextTask != null) {
                nextTask.setTaskToReturnTo(task.getTaskToReturnTo());
            } else {
                isLastTaskOverHome = true;
            }
        }

@@ -2595,7 +2598,10 @@ final class ActivityStack {
            ActivityStack lastStack = mStackSupervisor.getLastStack();
            final boolean fromHome = lastStack.isHomeStack();
            if (!isHomeStack() && (fromHome || topTask() != task)) {
                int returnToType = APPLICATION_ACTIVITY_TYPE;
                // If it's a last task over home - we default to keep its return to type not to
                // make underlying task focused when this one will be finished.
                int returnToType = isLastTaskOverHome
                        ? task.getTaskToReturnTo() : APPLICATION_ACTIVITY_TYPE;
                if (fromHome && StackId.allowTopTaskToReturnHome(mStackId)) {
                    returnToType = lastStack.topTask() == null
                            ? HOME_ACTIVITY_TYPE : lastStack.topTask().taskType;