Merge "Consider IME_VISIBLE_IMPERCEPTIBLE as shown for taskbar purposes" into sc-v2-dev am: 7aa0c3f9ee
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16323570 Change-Id: Ib6501fdff832c049c2102630b2ff5eaf374deb2a
This commit is contained in:
@@ -395,7 +395,7 @@ public class InputMethodService extends AbstractInputMethodService {
|
||||
|
||||
/**
|
||||
* @hide
|
||||
* The IME is visible.
|
||||
* The IME is perceptibly visible to the user.
|
||||
*/
|
||||
public static final int IME_VISIBLE = 0x2;
|
||||
|
||||
@@ -406,6 +406,15 @@ public class InputMethodService extends AbstractInputMethodService {
|
||||
*/
|
||||
public static final int IME_INVISIBLE = 0x4;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
* The IME is visible, but not yet perceptible to the user (e.g. fading in)
|
||||
* by {@link android.view.WindowInsetsController}.
|
||||
*
|
||||
* @see InputMethodManager#reportPerceptible
|
||||
*/
|
||||
public static final int IME_VISIBLE_IMPERCEPTIBLE = 0x8;
|
||||
|
||||
// Min and max values for back disposition.
|
||||
private static final int BACK_DISPOSITION_MIN = BACK_DISPOSITION_DEFAULT;
|
||||
private static final int BACK_DISPOSITION_MAX = BACK_DISPOSITION_ADJUST_NOTHING;
|
||||
|
||||
@@ -41,6 +41,7 @@ import android.content.ComponentCallbacks;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.hardware.display.DisplayManager;
|
||||
import android.inputmethodservice.InputMethodService;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
@@ -279,6 +280,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition,
|
||||
boolean showImeSwitcher) {
|
||||
boolean imeShown = mNavBarHelper.isImeShown(vis);
|
||||
if (!imeShown) {
|
||||
// Count imperceptible changes as visible so we transition taskbar out quickly.
|
||||
imeShown = (vis & InputMethodService.IME_VISIBLE_IMPERCEPTIBLE) != 0;
|
||||
}
|
||||
showImeSwitcher = imeShown && showImeSwitcher;
|
||||
int hints = Utilities.calculateBackDispositionHints(mNavigationIconHints, backDisposition,
|
||||
imeShown, showImeSwitcher);
|
||||
|
||||
@@ -2868,7 +2868,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
final long ident = Binder.clearCallingIdentity();
|
||||
try {
|
||||
if (!mCurPerceptible) {
|
||||
vis &= ~InputMethodService.IME_VISIBLE;
|
||||
if ((vis & InputMethodService.IME_VISIBLE) != 0) {
|
||||
vis &= ~InputMethodService.IME_VISIBLE;
|
||||
vis |= InputMethodService.IME_VISIBLE_IMPERCEPTIBLE;
|
||||
}
|
||||
} else {
|
||||
vis &= ~InputMethodService.IME_VISIBLE_IMPERCEPTIBLE;
|
||||
}
|
||||
// mImeWindowVis should be updated before calling shouldShowImeSwitcherLocked().
|
||||
final boolean needsToShowImeSwitcher = shouldShowImeSwitcherLocked(vis);
|
||||
|
||||
Reference in New Issue
Block a user