Merge "Make sure don\'t adjust IME when docked left-right" into nyc-dev am: 5da7a4a3f0
am: b35794163c
* commit 'b35794163ca40981967073f616edb28e6ca52706':
Make sure don't adjust IME when docked left-right
Change-Id: I2f7f195c855ed838079b06747e7e8ae8380e676f
This commit is contained in:
@@ -174,6 +174,7 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND;
|
||||
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
|
||||
import static android.view.WindowManager.DOCKED_BOTTOM;
|
||||
import static android.view.WindowManager.DOCKED_INVALID;
|
||||
import static android.view.WindowManager.DOCKED_TOP;
|
||||
import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW;
|
||||
import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||
@@ -7467,6 +7468,10 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
final boolean imeVisible = imeWin != null && imeWin.isVisibleLw() && imeWin.isDisplayedLw();
|
||||
final boolean dockVisible = isStackVisibleLocked(DOCKED_STACK_ID);
|
||||
final TaskStack imeTargetStack = getImeTargetStackLocked();
|
||||
final int imeDockSide = (dockVisible && imeTargetStack != null) ?
|
||||
imeTargetStack.getDockSide() : DOCKED_INVALID;
|
||||
final boolean imeOnTop = (imeDockSide == DOCKED_TOP);
|
||||
final boolean imeOnBottom = (imeDockSide == DOCKED_BOTTOM);
|
||||
|
||||
// The divider could be adjusted for IME position, or be thinner than usual,
|
||||
// or both. There are three possible cases:
|
||||
@@ -7474,20 +7479,19 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
// - If IME is visible, and focus is on bottom, divider is moved for IME and thinner.
|
||||
// - If IME is not visible, divider is not moved and is normal width.
|
||||
|
||||
if (imeVisible && dockVisible && imeTargetStack != null) {
|
||||
final boolean isFocusOnBottom = imeTargetStack.getDockSide() == DOCKED_BOTTOM;
|
||||
if (imeVisible && dockVisible && (imeOnTop || imeOnBottom)) {
|
||||
final ArrayList<TaskStack> stacks = displayContent.getStacks();
|
||||
for (int i = stacks.size() - 1; i >= 0; --i) {
|
||||
final TaskStack stack = stacks.get(i);
|
||||
final boolean isDockedOnBottom = stack.getDockSide() == DOCKED_BOTTOM;
|
||||
if (stack.isVisibleLocked() && (isFocusOnBottom || isDockedOnBottom)) {
|
||||
if (stack.isVisibleLocked() && (imeOnBottom || isDockedOnBottom)) {
|
||||
stack.setAdjustedForIme(imeWin);
|
||||
} else {
|
||||
stack.resetAdjustedForIme(false);
|
||||
}
|
||||
}
|
||||
displayContent.mDividerControllerLocked.setAdjustedForIme(
|
||||
isFocusOnBottom /*ime*/, true /*divider*/, true /*animate*/, imeWin);
|
||||
imeOnBottom /*ime*/, true /*divider*/, true /*animate*/, imeWin);
|
||||
} else {
|
||||
final ArrayList<TaskStack> stacks = displayContent.getStacks();
|
||||
for (int i = stacks.size() - 1; i >= 0; --i) {
|
||||
|
||||
Reference in New Issue
Block a user