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

Commit c3a50909 authored by Evan Rosky's avatar Evan Rosky
Browse files

Hide IME adjust dims when divider is hidden

When locking the screen, the divider is hidden, but the ime
dims aren't if the ime doesn't go away. This makes sure that
the ime adjust-dims are hidden whenever the divider is.

Bug: 156775140
Test: Open ime for top-split, lock, then turn-on screen. Observe
      no dims on half the screen.
Change-Id: I0851edd0071649ed0fbf12c8cd4fa3055383d864
parent b82aaa58
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -277,7 +277,8 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks,
        mView = (DividerView)
                LayoutInflater.from(dctx).inflate(R.layout.docked_stack_divider, null);
        DisplayLayout displayLayout = mDisplayController.getDisplayLayout(mContext.getDisplayId());
        mView.injectDependencies(mWindowManager, mDividerState, this, mSplits, mSplitLayout);
        mView.injectDependencies(mWindowManager, mDividerState, this, mSplits, mSplitLayout,
                mImePositionProcessor);
        mView.setVisibility(mVisible ? View.VISIBLE : View.INVISIBLE);
        mView.setMinimizedDockStack(mMinimized, mHomeStackResizable);
        final int size = dctx.getResources().getDimensionPixelSize(
+12 −0
Original line number Diff line number Diff line
@@ -266,6 +266,18 @@ class DividerImeController implements DisplayImeController.ImePositionProcessor
                mLastSecondaryDim * invProg + progress * mTargetSecondaryDim);
    }

    void setDimsHidden(SurfaceControl.Transaction t, boolean hidden) {
        final DividerView view = getView();
        if (hidden) {
            view.setResizeDimLayer(t, true /* primary */, 0.f /* alpha */);
            view.setResizeDimLayer(t, false /* primary */, 0.f /* alpha */);
        } else {
            updateDimTargets();
            view.setResizeDimLayer(t, true /* primary */, mTargetPrimaryDim);
            view.setResizeDimLayer(t, false /* primary */, mTargetSecondaryDim);
        }
    }

    private void onEnd(boolean cancelled, SurfaceControl.Transaction t) {
        if (!cancelled) {
            onProgress(1.f, t);
+5 −1
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
    private VelocityTracker mVelocityTracker;
    private FlingAnimationUtils mFlingAnimationUtils;
    private SplitDisplayLayout mSplitLayout;
    private DividerImeController mImeController;
    private DividerCallbacks mCallback;
    private final AnimationHandler mAnimationHandler = new AnimationHandler();

@@ -358,12 +359,14 @@ public class DividerView extends FrameLayout implements OnTouchListener,
    }

    public void injectDependencies(DividerWindowManager windowManager, DividerState dividerState,
            DividerCallbacks callback, SplitScreenTaskOrganizer tiles, SplitDisplayLayout sdl) {
            DividerCallbacks callback, SplitScreenTaskOrganizer tiles, SplitDisplayLayout sdl,
            DividerImeController imeController) {
        mWindowManager = windowManager;
        mState = dividerState;
        mCallback = callback;
        mTiles = tiles;
        mSplitLayout = sdl;
        mImeController = imeController;

        if (mState.mRatioPositionBeforeMinimized == 0) {
            // Set the middle target as the initial state
@@ -403,6 +406,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
            } else {
                t.show(sc);
            }
            mImeController.setDimsHidden(t, hidden);
            t.apply();
            mTiles.releaseTransaction(t);
        });