Allow power button to close an input method

am: d28e907183

Change-Id: I0324d14bde85e3461d0fe605f3b83496b25b9c75
This commit is contained in:
Mark Renouf
2016-12-01 01:29:11 +00:00
committed by android-build-merger
3 changed files with 37 additions and 0 deletions

View File

@@ -483,6 +483,16 @@ public interface WindowManagerPolicy {
*/
public void switchInputMethod(boolean forwardDirection);
/**
* Returns the visibility of the current input method window (false if there is none).
*/
public boolean isInputMethodWindowVisible();
/**
* Hides the current input method, if visible.
*/
public void hideCurrentInputMethod();
public void shutdown(boolean confirm);
public void reboot(boolean confirm);
public void rebootSafeMode(boolean confirm);

View File

@@ -189,6 +189,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
static final int SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP = 2;
static final int SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME = 3;
static final int SHORT_PRESS_POWER_GO_HOME = 4;
static final int SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME = 5;
static final int LONG_PRESS_POWER_NOTHING = 0;
static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1;
@@ -1302,6 +1303,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case SHORT_PRESS_POWER_GO_HOME:
launchHomeFromHotKey(true /* awakenFromDreams */, false /*respectKeyguard*/);
break;
case SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME:
if (mWindowManagerFuncs.isInputMethodWindowVisible()) {
mWindowManagerFuncs.hideCurrentInputMethod();
} else {
launchHomeFromHotKey(true /* awakenFromDreams */,
false /*respectKeyguard*/);
}
break;
}
}
}

View File

@@ -5786,6 +5786,24 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
// Called by window manager policy. Not exposed externally.
@Override
public boolean isInputMethodWindowVisible() {
synchronized (mWindowMap) {
return mInputMethodWindow != null && mInputMethodWindow.isVisibleLw();
}
}
// Called by window manager policy. Not exposed externally.
@Override
public void hideCurrentInputMethod() {
final InputMethodManagerInternal inputMethodManagerInternal =
LocalServices.getService(InputMethodManagerInternal.class);
if (inputMethodManagerInternal != null) {
inputMethodManagerInternal.hideCurrentInputMethod();
}
}
// Called by window manager policy. Not exposed externally.
@Override
public void lockDeviceNow() {