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

Commit ebe89998 authored by Winson Chung's avatar Winson Chung Committed by Automerger Merge Worker
Browse files

Merge "Reset the preferred top focus stack when task visibility changes" into...

Merge "Reset the preferred top focus stack when task visibility changes" into rvc-dev am: 5d9b12ce am: dee3c335 am: 2c74a92c

Change-Id: I943e9402d7829e0e80a41d031b03f504ee49829d
parents 2f3d1dbb 2c74a92c
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -1010,16 +1010,6 @@ class ActivityStack extends Task {
        }
    }

    boolean isTopActivityFocusable() {
        final ActivityRecord r = topRunningActivity();
        return r != null ? r.isFocusable()
                : (isFocusable() && getWindowConfiguration().canReceiveKeys());
    }

    boolean isFocusableAndVisible() {
        return isTopActivityFocusable() && shouldBeVisible(null /* starting */);
    }

    // TODO: Should each user have there own stacks?
    @Override
    void switchUser(int userId) {
+17 −0
Original line number Diff line number Diff line
@@ -3334,6 +3334,16 @@ class Task extends WindowContainer<WindowContainer> {
        });
    }

    boolean isTopActivityFocusable() {
        final ActivityRecord r = topRunningActivity();
        return r != null ? r.isFocusable()
                : (isFocusable() && getWindowConfiguration().canReceiveKeys());
    }

    boolean isFocusableAndVisible() {
        return isTopActivityFocusable() && shouldBeVisible(null /* starting */);
    }

    void positionChildAtTop(ActivityRecord child) {
        positionChildAt(child, POSITION_TOP);
    }
@@ -4552,7 +4562,14 @@ class Task extends WindowContainer<WindowContainer> {
        if (mForceHiddenFlags == newFlags) {
            return false;
        }
        final boolean wasHidden = isForceHidden();
        mForceHiddenFlags = newFlags;
        if (wasHidden && isFocusableAndVisible()) {
            // The change in force-hidden state will change visibility without triggering a stack
            // order change, so we should reset the preferred top focusable stack to ensure it's not
            // used if a new activity is started from this task.
            getDisplayArea().resetPreferredTopFocusableStackIfBelow(this);
        }
        return true;
    }

+7 −0
Original line number Diff line number Diff line
@@ -680,6 +680,13 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
        onStackOrderChanged(stack);
    }

    void resetPreferredTopFocusableStackIfBelow(Task task) {
        if (mPreferredTopFocusableStack != null
                && mPreferredTopFocusableStack.compareTo(task) < 0) {
            mPreferredTopFocusableStack = null;
        }
    }

    void positionStackAt(int position, ActivityStack child, boolean includingParents) {
        positionChildAt(position, child, includingParents);
        mDisplayContent.layoutAndAssignWindowLayersIfNeeded();