From b4c41fa813426eaff2c20837c86e3f8aaa215b6f Mon Sep 17 00:00:00 2001 From: alanv Date: Wed, 9 May 2012 22:20:41 -0700 Subject: [PATCH] Use key index as virtual view ID. Bug: 6464677 Change-Id: I443e4add8052dbce1d413c2ce38a7b98408613bf --- .../accessibility/AccessibilityEntityProvider.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java index 812bbc881..d7cd8e23a 100644 --- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java +++ b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java @@ -211,14 +211,17 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat } /** - * Generates a virtual view identifier for the specified key. + * Generates a virtual view identifier for the given key. Returned + * identifiers are valid until the next global layout state change. * * @param key The key to identify. * @return A virtual view identifier. */ private static int generateVirtualViewIdForKey(Key key) { - // The key code is unique within an instance of a Keyboard. - return key.mCode; + // The key x- and y-coordinates are stable between layout changes. + // Generate an identifier by bit-shifting the x-coordinate to the + // left-half of the integer and OR'ing with the y-coordinate. + return ((0xFFFF & key.mX) << (Integer.SIZE / 2)) | (0xFFFF & key.mY); } private final OnGlobalLayoutListener mGlobalLayoutListener = new OnGlobalLayoutListener() {