DO NOT MERGE Fix Keyboard Shortcut Helper requires pressing META+/ twice

By using a local boolean we were missing out on when the system dismisses
the window with the back key.

Bug: 28910518
Change-Id: I87b21c11830eaf81e3fd9586be6e3a7bb59c8a1f
(cherry picked from commit 3ac0ae076e)
This commit is contained in:
Clara Bayarri
2016-06-01 17:28:14 +01:00
parent 2fd085bb4f
commit 9fe1077b05

View File

@@ -72,7 +72,6 @@ public final class KeyboardShortcuts {
private static final String TAG = KeyboardShortcuts.class.getSimpleName(); private static final String TAG = KeyboardShortcuts.class.getSimpleName();
private static final Object sLock = new Object(); private static final Object sLock = new Object();
private static KeyboardShortcuts sInstance; private static KeyboardShortcuts sInstance;
private static boolean sIsShowing;
private final SparseArray<String> mSpecialCharacterNames = new SparseArray<>(); private final SparseArray<String> mSpecialCharacterNames = new SparseArray<>();
private final SparseArray<String> mModifierNames = new SparseArray<>(); private final SparseArray<String> mModifierNames = new SparseArray<>();
@@ -131,13 +130,12 @@ public final class KeyboardShortcuts {
dismiss(); dismiss();
} }
getInstance(context).showKeyboardShortcuts(deviceId); getInstance(context).showKeyboardShortcuts(deviceId);
sIsShowing = true;
} }
} }
public static void toggle(Context context, int deviceId) { public static void toggle(Context context, int deviceId) {
synchronized (sLock) { synchronized (sLock) {
if (sIsShowing) { if (isShowing()) {
dismiss(); dismiss();
} else { } else {
show(context, deviceId); show(context, deviceId);
@@ -151,10 +149,14 @@ public final class KeyboardShortcuts {
sInstance.dismissKeyboardShortcuts(); sInstance.dismissKeyboardShortcuts();
sInstance = null; sInstance = null;
} }
sIsShowing = false;
} }
} }
private static boolean isShowing() {
return sInstance != null && sInstance.mKeyboardShortcutsDialog != null
&& sInstance.mKeyboardShortcutsDialog.isShowing();
}
private void loadResources(Context context) { private void loadResources(Context context) {
mSpecialCharacterNames.put( mSpecialCharacterNames.put(
KeyEvent.KEYCODE_HOME, context.getString(R.string.keyboard_key_home)); KeyEvent.KEYCODE_HOME, context.getString(R.string.keyboard_key_home));