From 3070e77f91a3c2ccb0be4588cbcff3936829458a Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 17 May 2016 16:41:32 -0700 Subject: Fix a few issues with ime adjust/minimized dock stack - Do not override minimized state in SysUI when IME adjust change comes in. - Do not animate IME adjust if we are already animating for minimized. This lead to problems that we animated the minimized state with the IME adjust values. - Make sure to update state after checking whether the IME adjust is animating. This is to fix an issue where sometimes the IME adjust animation didn't run because the old target was wrong. Change-Id: Ie35e2f943a4cda99ffdc6f14663d892863759e46 Fixes: 28819201 --- .../src/com/android/systemui/stackdivider/Divider.java | 10 ++++++---- .../com/android/server/wm/DockedStackDividerController.java | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java index f017803d4cbf..e89c136d8772 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java @@ -169,10 +169,12 @@ public class Divider extends SystemUI { if (mAdjustedForIme != adjustedForIme) { mAdjustedForIme = adjustedForIme; updateTouchable(); - if (animDuration > 0) { - mView.setAdjustedForIme(adjustedForIme, animDuration); - } else { - mView.setAdjustedForIme(adjustedForIme); + if (!mMinimized) { + if (animDuration > 0) { + mView.setAdjustedForIme(adjustedForIme, animDuration); + } else { + mView.setAdjustedForIme(adjustedForIme); + } } } }); diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java index 7a387adfba26..1b31d07cf31e 100644 --- a/services/core/java/com/android/server/wm/DockedStackDividerController.java +++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java @@ -300,7 +300,7 @@ public class DockedStackDividerController implements DimLayerUser { boolean animate, WindowState imeWin, int imeHeight) { if (mAdjustedForIme != adjustedForIme || (adjustedForIme && mImeHeight != imeHeight) || mAdjustedForDivider != adjustedForDivider) { - if (animate) { + if (animate && !mAnimatingForMinimizedDockedStack) { startImeAdjustAnimation(adjustedForIme, adjustedForDivider, imeWin); } else { // Animation might be delayed, so only notify if we don't run an animation. @@ -547,8 +547,6 @@ public class DockedStackDividerController implements DimLayerUser { private void startImeAdjustAnimation( boolean adjustedForIme, boolean adjustedForDivider, WindowState imeWin) { - mAnimatingForIme = true; - mAnimationStarted = false; // If we're not in an animation, the starting point depends on whether we're adjusted // or not. If we're already in an animation, we start from where the current animation @@ -562,6 +560,8 @@ public class DockedStackDividerController implements DimLayerUser { mAnimationStart = mLastAnimationProgress; mDividerAnimationStart = mLastDividerProgress; } + mAnimatingForIme = true; + mAnimationStarted = false; mAnimationTarget = adjustedForIme ? 1 : 0; mDividerAnimationTarget = adjustedForDivider ? 1 : 0; -- cgit v1.2.3-59-g8ed1b