Merge "Use focused app\'s stack for IME adjustment" into nyc-dev am: 65ee55457d am: e5bbbea494

am: afe4482b4a

* commit 'afe4482b4ab20acea3d7a3282578dca0fdf666bd':
  Use focused app's stack for IME adjustment

Change-Id: Iee5d2fe0bc9d1ec002f7d7fd7a11caf0e24cf290
This commit is contained in:
Chong Zhang
2016-05-17 23:43:42 +00:00
committed by android-build-merger
2 changed files with 9 additions and 6 deletions

View File

@@ -1089,7 +1089,7 @@ public class TaskStack implements DimLayer.DimLayerUser,
}
setAdjustedBounds(mTmpAdjustedBounds);
final boolean isImeTarget = (mService.getImeTargetStackLocked() == this);
final boolean isImeTarget = (mService.getImeFocusStackLocked() == this);
if (mAdjustedForIme && adjust && !isImeTarget) {
final float alpha = Math.max(mAdjustImeAmount, mAdjustDividerAmount)
* IME_ADJUST_DIM_AMOUNT;

View File

@@ -7587,7 +7587,7 @@ public class WindowManagerService extends IWindowManager.Stub
final WindowState imeWin = mInputMethodWindow;
final boolean imeVisible = imeWin != null && imeWin.isVisibleLw() && imeWin.isDisplayedLw();
final boolean dockVisible = isStackVisibleLocked(DOCKED_STACK_ID);
final TaskStack imeTargetStack = getImeTargetStackLocked();
final TaskStack imeTargetStack = getImeFocusStackLocked();
final int imeDockSide = (dockVisible && imeTargetStack != null) ?
imeTargetStack.getDockSide() : DOCKED_INVALID;
final boolean imeOnTop = (imeDockSide == DOCKED_TOP);
@@ -7756,10 +7756,13 @@ public class WindowManagerService extends IWindowManager.Stub
return mCurrentFocus;
}
TaskStack getImeTargetStackLocked() {
// Don't use WindowState.getStack() because it returns home stack for system windows.
Task imeTask = mInputMethodTarget != null ? mInputMethodTarget.getTask() : null;
return imeTask != null ? imeTask.mStack : null;
TaskStack getImeFocusStackLocked() {
// Don't use mCurrentFocus.getStack() because it returns home stack for system windows.
// Also don't use mInputMethodTarget's stack, because some window with FLAG_NOT_FOCUSABLE
// and FLAG_ALT_FOCUSABLE_IM flags both set might be set to IME target so they're moved
// to make room for IME, but the window is not the focused window that's taking input.
return (mFocusedApp != null && mFocusedApp.mTask != null) ?
mFocusedApp.mTask.mStack : null;
}
private void showAuditSafeModeNotification() {