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

Commit 8ebf215f authored by Tony Huang's avatar Tony Huang Committed by Android (Google) Code Review
Browse files

Merge "Start IME animation if its insets update after show" into rvc-dev

parents c5fe7255 d1cb4404
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -211,14 +211,16 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks,
            mTargetShown = imeShouldShow;
            if (mLastAdjustTop < 0) {
                mLastAdjustTop = imeShouldShow ? hiddenTop : shownTop;
            } else {
                // Check for an "interruption" of an existing animation. In this case, we need to
                // fake-flip the last-known state direction so that the animation completes in the
                // other direction.
            } else if (mLastAdjustTop != (imeShouldShow ? mShownTop : mHiddenTop)) {
                if (mTargetAdjusted != targetAdjusted && targetAdjusted == mAdjusted) {
                    if (mLastAdjustTop != (imeShouldShow ? mShownTop : mHiddenTop)) {
                    // Check for an "interruption" of an existing animation. In this case, we
                    // need to fake-flip the last-known state direction so that the animation
                    // completes in the other direction.
                    mAdjusted = mTargetAdjusted;
                    }
                } else if (targetAdjusted && mTargetAdjusted && mAdjusted) {
                    // Already fully adjusted for IME, but IME height has changed; so, force-start
                    // an async animation to the new IME height.
                    mAdjusted = false;
                }
            }
            if (mPaused) {
+10 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Handler;
import android.os.RemoteException;
import android.util.Slog;
@@ -188,7 +189,16 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
            if (mInsetsState.equals(insetsState)) {
                return;
            }

            final InsetsSource newSource = insetsState.getSource(InsetsState.ITYPE_IME);
            final Rect newFrame = newSource.getFrame();
            final Rect oldFrame = mInsetsState.getSource(InsetsState.ITYPE_IME).getFrame();

            mInsetsState.set(insetsState, true /* copySources */);
            if (mImeShowing && !newFrame.equals(oldFrame) && newSource.isVisible()) {
                if (DEBUG) Slog.d(TAG, "insetsChanged when IME showing, restart animation");
                startAnimation(mImeShowing, true /* forceRestart */);
            }
        }

        @Override