From c3a50909e3c45f7c37766bc48970dd0b0ef11cda Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Tue, 19 May 2020 13:36:28 -0700 Subject: [PATCH] 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 --- .../com/android/systemui/stackdivider/Divider.java | 3 ++- .../systemui/stackdivider/DividerImeController.java | 12 ++++++++++++ .../android/systemui/stackdivider/DividerView.java | 6 +++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java index 379bb9d247db2..95aceed1126b9 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java @@ -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( diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java index 533fd5fa63528..1e0c07b1cd4c6 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java @@ -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); diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 8ca50cdddf71c..e349b5af5b2d2 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -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); });