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

Commit fd5b5eae authored by Wale Ogunwale's avatar Wale Ogunwale Committed by Android (Google) Code Review
Browse files

Merge "Fix split divider position issue" into sc-dev

parents 4b8044cb 636f9e3a
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.view.IWindow;
import android.view.LayoutInflater;
import android.view.SurfaceControl;
import android.view.SurfaceControlViewHost;
import android.view.SurfaceSession;
import android.view.WindowManager;
import android.view.WindowlessWindowManager;

@@ -55,6 +56,7 @@ public final class SplitWindowManager extends WindowlessWindowManager {
    private final ParentContainerCallbacks mParentContainerCallbacks;
    private Context mContext;
    private SurfaceControlViewHost mViewHost;
    private SurfaceControl mLeash;
    private boolean mResizingSplits;
    private final String mWindowName;

@@ -88,7 +90,15 @@ public final class SplitWindowManager extends WindowlessWindowManager {

    @Override
    protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) {
        mParentContainerCallbacks.attachToParentSurface(b);
        // Can't set position for the ViewRootImpl SC directly. Create a leash to manipulate later.
        final SurfaceControl.Builder builder = new SurfaceControl.Builder(new SurfaceSession())
                .setContainerLayer()
                .setName(TAG)
                .setHidden(false)
                .setCallsite("SplitWindowManager#attachToParentSurface");
        mParentContainerCallbacks.attachToParentSurface(builder);
        mLeash = builder.build();
        b.setParent(mLeash);
    }

    /** Inflates {@link DividerView} on to the root surface. */
@@ -118,11 +128,17 @@ public final class SplitWindowManager extends WindowlessWindowManager {
     * hierarchy.
     */
    void release() {
        if (mViewHost == null) return;
        if (mViewHost != null){
            mViewHost.release();
            mViewHost = null;
        }

        if (mLeash != null) {
            new SurfaceControl.Transaction().remove(mLeash).apply();
            mLeash = null;
        }
    }

    void setResizingSplits(boolean resizing) {
        if (resizing == mResizingSplits) return;
        try {
@@ -139,6 +155,6 @@ public final class SplitWindowManager extends WindowlessWindowManager {
     */
    @Nullable
    SurfaceControl getSurfaceControl() {
        return mViewHost == null ? null : getSurfaceControl(mViewHost.getWindowToken());
        return mLeash;
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener,
    }

    void setSideStageVisibility(boolean visible) {
        if (!mSideStageListener.mVisible == visible) return;
        if (mSideStageListener.mVisible == visible) return;

        final WindowContainerTransaction wct = new WindowContainerTransaction();
        mSideStage.setVisibility(visible, wct);