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

Commit 33208571 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by android-build-merger
Browse files

Merge "Adjust divider when IME height is changed." into nyc-dev

am: 36d1296c

* commit '36d1296c':
  Adjust divider when IME height is changed.

Change-Id: Ib8051875be06b0e394107c40eae79cee26917331
parents 9e13b1f2 36d1296c
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ public class DockedStackDividerController implements DimLayerUser {
    private final Rect mTouchRegion = new Rect();
    private boolean mAnimatingForIme;
    private boolean mAdjustedForIme;
    private int mImeHeight;
    private WindowState mDelayedImeWin;
    private boolean mAdjustedForDivider;
    private float mDividerAnimationStart;
@@ -296,8 +297,9 @@ public class DockedStackDividerController implements DimLayerUser {

    void setAdjustedForIme(
            boolean adjustedForIme, boolean adjustedForDivider,
            boolean animate, WindowState imeWin) {
        if (mAdjustedForIme != adjustedForIme || mAdjustedForDivider != adjustedForDivider) {
            boolean animate, WindowState imeWin, int imeHeight) {
        if (mAdjustedForIme != adjustedForIme || (adjustedForIme && mImeHeight != imeHeight)
                || mAdjustedForDivider != adjustedForDivider) {
            if (animate) {
                startImeAdjustAnimation(adjustedForIme, adjustedForDivider, imeWin);
            } else {
@@ -305,10 +307,15 @@ public class DockedStackDividerController implements DimLayerUser {
                notifyAdjustedForImeChanged(adjustedForIme || adjustedForDivider, 0 /* duration */);
            }
            mAdjustedForIme = adjustedForIme;
            mImeHeight = imeHeight;
            mAdjustedForDivider = adjustedForDivider;
        }
    }

    int getImeHeightAdjustedFor() {
        return mImeHeight;
    }

    void positionDockedStackedDivider(Rect frame) {
        TaskStack stack = mDisplayContent.getDockedStackLocked();
        if (stack == null) {
+2 −2
Original line number Diff line number Diff line
@@ -849,10 +849,10 @@ public class TaskStack implements DimLayer.DimLayerUser,
     *
     * @param imeWin The IME window.
     */
    void setAdjustedForIme(WindowState imeWin) {
    void setAdjustedForIme(WindowState imeWin, boolean forceUpdate) {
        mImeWin = imeWin;
        mImeGoingAway = false;
        if (!mAdjustedForIme) {
        if (!mAdjustedForIme || forceUpdate) {
            mAdjustedForIme = true;
            mAdjustImeAmount = 0f;
            mAdjustDividerAmount = 0f;
+6 −3
Original line number Diff line number Diff line
@@ -7542,6 +7542,9 @@ public class WindowManagerService extends IWindowManager.Stub
        final boolean imeOnTop = (imeDockSide == DOCKED_TOP);
        final boolean imeOnBottom = (imeDockSide == DOCKED_BOTTOM);
        final boolean dockMinimized = displayContent.mDividerControllerLocked.isMinimizedDock();
        final int imeHeight = mPolicy.getInputMethodWindowVisibleHeightLw();
        final boolean imeHeightChanged = imeVisible &&
                imeHeight != displayContent.mDividerControllerLocked.getImeHeightAdjustedFor();

        // The divider could be adjusted for IME position, or be thinner than usual,
        // or both. There are three possible cases:
@@ -7555,13 +7558,13 @@ public class WindowManagerService extends IWindowManager.Stub
                final TaskStack stack = stacks.get(i);
                final boolean isDockedOnBottom = stack.getDockSide() == DOCKED_BOTTOM;
                if (stack.isVisibleLocked() && (imeOnBottom || isDockedOnBottom)) {
                    stack.setAdjustedForIme(imeWin);
                    stack.setAdjustedForIme(imeWin, imeOnBottom && imeHeightChanged);
                } else {
                    stack.resetAdjustedForIme(false);
                }
            }
            displayContent.mDividerControllerLocked.setAdjustedForIme(
                    imeOnBottom /*ime*/, true /*divider*/, true /*animate*/, imeWin);
                    imeOnBottom /*ime*/, true /*divider*/, true /*animate*/, imeWin, imeHeight);
        } else {
            final ArrayList<TaskStack> stacks = displayContent.getStacks();
            for (int i = stacks.size() - 1; i >= 0; --i) {
@@ -7569,7 +7572,7 @@ public class WindowManagerService extends IWindowManager.Stub
                stack.resetAdjustedForIme(!dockVisible);
            }
            displayContent.mDividerControllerLocked.setAdjustedForIme(
                    false /*ime*/, false /*divider*/, dockVisible /*animate*/, imeWin);
                    false /*ime*/, false /*divider*/, dockVisible /*animate*/, imeWin, imeHeight);
        }
    }