Allow power button to close an input method
am: d28e907183
Change-Id: I0324d14bde85e3461d0fe605f3b83496b25b9c75
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user