Fix bugs when transitioning out of touch mode

Change-Id: I56cbac17fba500871af839a87d746ea8e1fd5d0f
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index 582ef3f..484922d 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -2241,7 +2241,8 @@
      *   leaving touch mode alone is considered the event).
      */
     private boolean checkForLeavingTouchModeAndConsume(KeyEvent event) {
-        if (event.getAction() != KeyEvent.ACTION_DOWN) {
+        final int action = event.getAction();
+        if (action != KeyEvent.ACTION_DOWN && action != KeyEvent.ACTION_MULTIPLE) {
             return false;
         }
         if ((event.getFlags()&KeyEvent.FLAG_KEEP_TOUCH_MODE) != 0) {
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 5bded0b..a07397f 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -1980,11 +1980,11 @@
             if (touchMode == TOUCH_MODE_OVERSCROLL || touchMode == TOUCH_MODE_OVERFLING) {
                 if (mFlingRunnable != null) {
                     mFlingRunnable.endFling();
-                    
-                    if (mScrollY != 0) {
-                        mScrollY = 0;
-                        invalidate();
-                    }
+                }
+
+                if (mScrollY != 0) {
+                    mScrollY = 0;
+                    invalidate();
                 }
             }
         }