From 83be935e65115a584d885c299ac369c6cedd3e40 Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Tue, 14 Jul 2020 11:53:33 -0700 Subject: [PATCH] Reset Divider IME state when leaving split-screen This is basically a broad-stroke reset after leaving split-screen to clean-up ime state inconsistencies. Generally this won't really do anything, but it should hopefully prevent bad state from persisting when it does happen. Bug: 161155771 Test: Use split-screen stuff. It should continue working. Change-Id: If225dee39b8eca160a32a0953d23ebe86cceff9e --- .../com/android/systemui/stackdivider/Divider.java | 1 + .../systemui/stackdivider/DividerImeController.java | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java index 370f9a7624027..d9d46605f209d 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java @@ -529,6 +529,7 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, updateVisibility(false /* visible */); mMinimized = false; removeDivider(); + mImePositionProcessor.reset(); } void ensureMinimizedSplit() { diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java index 9db389eba3d85..89f4a94ac877d 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java @@ -117,6 +117,18 @@ class DividerImeController implements DisplayImeController.ImePositionProcessor && (imeSplit.asBinder() == mSplits.mSecondary.token.asBinder()); } + void reset() { + mPaused = true; + mPausedTargetAdjusted = false; + mAdjustedWhileHidden = false; + mAnimation = null; + mAdjusted = mTargetAdjusted = false; + mImeWasShown = mTargetShown = false; + mTargetPrimaryDim = mTargetSecondaryDim = mLastPrimaryDim = mLastSecondaryDim = 0.f; + mSecondaryHasFocus = false; + mLastAdjustTop = -1; + } + private void updateDimTargets() { final boolean splitIsVisible = !getView().isHidden(); mTargetPrimaryDim = (mSecondaryHasFocus && mTargetShown && splitIsVisible)