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
This commit is contained in:
Evan Rosky
2020-07-14 11:53:33 -07:00
parent c232251896
commit 83be935e65
2 changed files with 13 additions and 0 deletions

View File

@@ -529,6 +529,7 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks,
updateVisibility(false /* visible */);
mMinimized = false;
removeDivider();
mImePositionProcessor.reset();
}
void ensureMinimizedSplit() {

View File

@@ -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)