Fix to clear on hover visual cue

Bug: 12491371
Change-Id: Ib7ca91ae73aa40e45ea5f6d4e53348a261a4b823
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
index 7cae986..8ed0196 100644
--- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
+++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
@@ -39,7 +39,7 @@
     protected final KeyDetector mKeyDetector;
     private Keyboard mKeyboard;
     private KeyboardAccessibilityNodeProvider mAccessibilityNodeProvider;
-    private Key mCurrentHoverKey;
+    private Key mLastHoverKey;
 
     public KeyboardAccessibilityDelegate(final KV keyboardView, final KeyDetector keyDetector) {
         super();
@@ -71,12 +71,12 @@
         return mKeyboard;
     }
 
-    protected final void setCurrentHoverKey(final Key key) {
-        mCurrentHoverKey = key;
+    protected final void setLastHoverKey(final Key key) {
+        mLastHoverKey = key;
     }
 
-    protected final Key getCurrentHoverKey() {
-        return mCurrentHoverKey;
+    protected final Key getLastHoverKey() {
+        return mLastHoverKey;
     }
 
     /**
@@ -142,7 +142,7 @@
      * @param event The hover event.
      * @return key The key that the <code>event</code> is on.
      */
-    protected final Key getHoverKey(final MotionEvent event) {
+    protected final Key getHoverKeyOf(final MotionEvent event) {
         final int actionIndex = event.getActionIndex();
         final int x = (int)event.getX(actionIndex);
         final int y = (int)event.getY(actionIndex);
@@ -179,11 +179,11 @@
      * @param event A hover enter event.
      */
     protected void onHoverEnter(final MotionEvent event) {
-        final Key key = getHoverKey(event);
+        final Key key = getHoverKeyOf(event);
         if (key != null) {
             onHoverEnterKey(key);
         }
-        setCurrentHoverKey(key);
+        setLastHoverKey(key);
     }
 
     /**
@@ -192,8 +192,8 @@
      * @param event A hover move event.
      */
     protected void onHoverMove(final MotionEvent event) {
-        final Key previousKey = getCurrentHoverKey();
-        final Key key = getHoverKey(event);
+        final Key previousKey = getLastHoverKey();
+        final Key key = getHoverKeyOf(event);
         if (key != previousKey) {
             if (previousKey != null) {
                 onHoverExitKey(previousKey);
@@ -205,7 +205,7 @@
         if (key != null) {
             onHoverMoveKey(key);
         }
-        setCurrentHoverKey(key);
+        setLastHoverKey(key);
     }
 
     /**
@@ -214,7 +214,11 @@
      * @param event A hover exit event.
      */
     protected void onHoverExit(final MotionEvent event) {
-        final Key key = getHoverKey(event);
+        final Key lastKey = getLastHoverKey();
+        if (lastKey != null) {
+            onHoverExitKey(lastKey);
+        }
+        final Key key = getHoverKeyOf(event);
         // Make sure we're not getting an EXIT event because the user slid
         // off the keyboard area, then force a key press.
         if (key != null) {
@@ -222,7 +226,7 @@
             simulateTouchEvent(MotionEvent.ACTION_UP, event);
             onHoverExitKey(key);
         }
-        setCurrentHoverKey(null);
+        setLastHoverKey(null);
     }
 
     /**