Loading services/core/java/com/android/server/wm/DockedStackDividerController.java +9 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading @@ -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) { Loading services/core/java/com/android/server/wm/TaskStack.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading services/core/java/com/android/server/wm/WindowManagerService.java +6 −3 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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) { Loading @@ -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); } } Loading Loading
services/core/java/com/android/server/wm/DockedStackDividerController.java +9 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading @@ -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) { Loading
services/core/java/com/android/server/wm/TaskStack.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading
services/core/java/com/android/server/wm/WindowManagerService.java +6 −3 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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) { Loading @@ -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); } } Loading