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

Commit 85d23dda authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge changes from topic "am-9ac462fdf8db49549ee55f6fc0dc3a87" into...

Merge changes from topic "am-9ac462fdf8db49549ee55f6fc0dc3a87" into rvc-d1-dev-plus-aosp am: 636112c9

Change-Id: Iabec304a7365bfbfd843cb33ebb04741c0442775
parents 81cb2822 636112c9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -670,6 +670,12 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
            });
        }
        startConnectionToCurrentUser();

        // Clean up the minimized state if launcher dies
        Divider divider = mDividerOptional.get();
        if (divider != null) {
            divider.setMinimized(false);
        }
    }

    public void startConnectionToCurrentUser() {
+17 −7
Original line number Diff line number Diff line
@@ -273,10 +273,12 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks,
            }

            // Update all the adjusted-for-ime states
            if (!mPaused) {
                mView.setAdjustedForIme(mTargetShown, mTargetShown
                        ? DisplayImeController.ANIMATION_DURATION_SHOW_MS
                        : DisplayImeController.ANIMATION_DURATION_HIDE_MS);
            setAdjustedForIme(mTargetShown);
            }
            setAdjustedForIme(mTargetShown && !mPaused);
        }

        @Override
@@ -390,6 +392,9 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks,
                mTargetPrimaryDim = mTargetSecondaryDim = 0.f;
                updateImeAdjustState();
                startAsyncAnimation();
                if (mAnimation != null) {
                    mAnimation.end();
                }
            });
        }

@@ -605,15 +610,17 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks,
                    + mHomeStackResizable + "->" + homeStackResizable + " split:" + inSplitMode());
        }
        WindowContainerTransaction wct = new WindowContainerTransaction();
        final boolean minimizedChanged = mMinimized != minimized;
        // Update minimized state
        if (mMinimized != minimized) {
        if (minimizedChanged) {
            mMinimized = minimized;
        }
        // Always set this because we could be entering split when mMinimized is already true
        wct.setFocusable(mSplits.mPrimary.token, !mMinimized);

        // Update home-stack resizability
        if (mHomeStackResizable != homeStackResizable) {
        final boolean homeResizableChanged = mHomeStackResizable != homeStackResizable;
        if (homeResizableChanged) {
            mHomeStackResizable = homeStackResizable;
            if (inSplitMode()) {
                WindowManagerProxy.applyHomeTasksMinimized(
@@ -629,7 +636,10 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks,
            if (mMinimized) {
                mImePositionProcessor.pause(displayId);
            }
            if (minimizedChanged || homeResizableChanged) {
                // This conflicts with IME adjustment, so only call it when things change.
                mView.setMinimizedDockStack(minimized, getAnimDuration(), homeStackResizable);
            }
            if (!mMinimized) {
                // afterwards so it can end any animations started in view
                mImePositionProcessor.resume(displayId);
+16 −5
Original line number Diff line number Diff line
@@ -191,13 +191,24 @@ public class SplitDisplayLayout {
        final int currDividerWidth =
                (int) (dividerWidthInactive * shownFraction + dividerWidth * (1.f - shownFraction));

        // Calculate the highest we can move the bottom of the top stack to keep 30% visible.
        final int minTopStackBottom = displayStableRect.top
                + (int) ((mPrimary.bottom - displayStableRect.top) * ADJUSTED_STACK_FRACTION_MIN);
        final int minImeTop = minTopStackBottom + currDividerWidth;

        // Calculate an offset which shifts the stacks up by the height of the IME, but still
        // leaves at least 30% of the top stack visible.
        final int yOffset = Math.max(0, dl.height() - Math.max(currImeTop, minImeTop));
        // Based on that, calculate the maximum amount we'll allow the ime to shift things.
        final int maxOffset = mPrimary.bottom - minTopStackBottom;
        // Calculate how much we would shift things without limits (basically the height of ime).
        final int desiredOffset = hiddenTop - shownTop;
        // Calculate an "adjustedTop" which is the currImeTop but restricted by our constraints.
        // We want an effect where the adjustment only occurs during the "highest" portion of the
        // ime animation. This is done by shifting the adjustment values by the difference in
        // offsets (effectively playing the whole adjustment animation some fixed amount of pixels
        // below the ime top).
        final int topCorrection = Math.max(0, desiredOffset - maxOffset);
        final int adjustedTop = currImeTop + topCorrection;
        // The actual yOffset is the distance between adjustedTop and the bottom of the display.
        // Since our adjustedTop values are playing "below" the ime, we clamp at 0 so we only
        // see adjustment upward.
        final int yOffset = Math.max(0, dl.height() - adjustedTop);

        // TOP
        // Reduce the offset by an additional small amount to squish the divider bar.
+10 −3
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ import android.os.RemoteException;
import android.util.Log;
import android.view.Display;
import android.view.ITaskOrganizer;
import android.view.IWindowContainer;
import android.view.SurfaceControl;
import android.view.SurfaceSession;

@@ -108,6 +107,8 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub {
     * presentations based on the contents of the split regions.
     */
    private void handleTaskInfoChanged(RunningTaskInfo info) {
        final boolean secondaryWasHomeOrRecents = mSecondary.topActivityType == ACTIVITY_TYPE_HOME
                || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS;
        final boolean primaryWasEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED;
        final boolean secondaryWasEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED;
        if (info.token.asBinder() == mPrimary.token.asBinder()) {
@@ -117,9 +118,16 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub {
        }
        final boolean primaryIsEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED;
        final boolean secondaryIsEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED;
        final boolean secondaryIsHomeOrRecents = mSecondary.topActivityType == ACTIVITY_TYPE_HOME
                || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS;
        if (DEBUG) {
            Log.d(TAG, "onTaskInfoChanged " + mPrimary + "  " + mSecondary);
        }
        if (primaryIsEmpty == primaryWasEmpty && secondaryWasEmpty == secondaryIsEmpty
                && secondaryWasHomeOrRecents == secondaryIsHomeOrRecents) {
            // No relevant changes
            return;
        }
        if (primaryIsEmpty || secondaryIsEmpty) {
            // At-least one of the splits is empty which means we are currently transitioning
            // into or out-of split-screen mode.
@@ -146,8 +154,7 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub {
                }
                mDivider.startEnterSplit();
            }
        } else if (mSecondary.topActivityType == ACTIVITY_TYPE_HOME
                || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS) {
        } else if (secondaryIsHomeOrRecents) {
            // Both splits are populated but the secondary split has a home/recents stack on top,
            // so enter minimized mode.
            mDivider.ensureMinimizedSplit();
+15 −7
Original line number Diff line number Diff line
@@ -1938,7 +1938,12 @@ class Task extends WindowContainer<WindowContainer> {
        // TODO: Should also take care of Pip mode changes here.

        saveLaunchingStateIfNeeded();
        updateTaskOrganizerState(false /* forceUpdate */);
        final boolean taskOrgChanged = updateTaskOrganizerState(false /* forceUpdate */);
        // If the task organizer has changed, then it will already be receiving taskAppeared with
        // the latest task-info thus the task-info won't have changed.
        if (!taskOrgChanged && mTaskOrganizer != null) {
            mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(this, false /* force */);
        }
    }

    /**
@@ -4043,15 +4048,16 @@ class Task extends WindowContainer<WindowContainer> {
        }
   }

    void setTaskOrganizer(ITaskOrganizer organizer) {
    boolean setTaskOrganizer(ITaskOrganizer organizer) {
        if (mTaskOrganizer == organizer) {
            return;
            return false;
        }
        // Let the old organizer know it has lost control.
        sendTaskVanished();
        mTaskOrganizer = organizer;
        sendTaskAppeared();
        onTaskOrganizerChanged();
        return true;
    }

    // Called on Binder death.
@@ -4068,10 +4074,11 @@ class Task extends WindowContainer<WindowContainer> {
     * @param forceUpdate Updates the task organizer to the one currently specified in the task
     *                    org controller for the task's windowing mode, ignoring the cached
     *                    windowing mode checks.
     * @return {@code true} if task organizer changed.
     */
    void updateTaskOrganizerState(boolean forceUpdate) {
    boolean updateTaskOrganizerState(boolean forceUpdate) {
        if (!isRootTask()) {
            return;
            return false;
        }

        final int windowingMode = getWindowingMode();
@@ -4080,7 +4087,7 @@ class Task extends WindowContainer<WindowContainer> {
            // with our old organizer. This lets us implement the semantic
            // where SysUI can continue to manage it's old tasks
            // while CTS temporarily takes over the registration.
            return;
            return false;
        }
        /*
         * Different windowing modes may be managed by different task organizers. If
@@ -4089,8 +4096,9 @@ class Task extends WindowContainer<WindowContainer> {
         */
        final ITaskOrganizer org =
                mWmService.mAtmService.mTaskOrganizerController.getTaskOrganizer(windowingMode);
        setTaskOrganizer(org);
        final boolean result = setTaskOrganizer(org);
        mLastTaskOrganizerWindowingMode = windowingMode;
        return result;
    }

    private void onTaskOrganizerChanged() {
Loading