Add WindowManagerPolicy.allowKeyRepeat() method for disabling key repeats.
Part of a fix for bug b/2198537
Change-Id: I99dc64772fa7644b12432d5549603025196ea3e2
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index 916fc2d..1ab46fc 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -868,4 +868,9 @@
* requesting this is no longer visible.
*/
public void screenOnStoppedLw();
+
+ /**
+ * Return false to disable key repeat events from being generated.
+ */
+ public boolean allowKeyRepeat();
}
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 9caa386..e743513 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -6227,6 +6227,13 @@
lt.sample("2 got event ", System.nanoTime() - ev.whenNano);
}
+ if (lastKey != null && !mPolicy.allowKeyRepeat()) {
+ // cancel key repeat at the request of the policy.
+ lastKey = null;
+ downTime = 0;
+ lastKeyTime = curTime;
+ nextKeyTime = curTime + LONG_WAIT;
+ }
try {
if (ev != null) {
curTime = SystemClock.uptimeMillis();