Don't let ConversationCursor do work during scroll

Bug: 9032162
Change-Id: Id47fd9c2a1cab01b798a0c24a5802a3d059d5c70
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index 9a61f7d..928b2f8 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -2909,10 +2909,7 @@
         boolean isAnimating = false;
         ConversationListFragment convListFragment = getConversationListFragment();
         if (convListFragment != null) {
-            AnimatedAdapter adapter = convListFragment.getAnimatedAdapter();
-            if (adapter != null) {
-                isAnimating = adapter.isAnimating();
-            }
+            isAnimating = convListFragment.isAnimating();
         }
         return isAnimating;
     }
diff --git a/src/com/android/mail/ui/ConversationListFragment.java b/src/com/android/mail/ui/ConversationListFragment.java
index 476a9ba..5afc9f4 100644
--- a/src/com/android/mail/ui/ConversationListFragment.java
+++ b/src/com/android/mail/ui/ConversationListFragment.java
@@ -650,6 +650,12 @@
         }
     }
 
+    public boolean isAnimating() {
+        final AnimatedAdapter adapter = getAnimatedAdapter();
+        return (adapter != null && adapter.isAnimating()) ||
+                (mListView != null && mListView.isScrolling());
+    }
+
     private void clearChoicesAndActivated() {
         final int currentSelected = mListView.getCheckedItemPosition();
         if (currentSelected != ListView.INVALID_POSITION) {
diff --git a/src/com/android/mail/ui/SwipeableListView.java b/src/com/android/mail/ui/SwipeableListView.java
index cc3750e..657051f 100644
--- a/src/com/android/mail/ui/SwipeableListView.java
+++ b/src/com/android/mail/ui/SwipeableListView.java
@@ -377,6 +377,19 @@
             default:
                 mScrolling = true;
         }
+        if (!mScrolling) {
+            final Context c = getContext();
+            if (c instanceof ControllableActivity) {
+                final ControllableActivity activity = (ControllableActivity) c;
+                activity.onAnimationEnd(null /* adapter */);
+            } else {
+                LogUtils.wtf(LOG_TAG, "unexpected context=%s", c);
+            }
+        }
+    }
+
+    public boolean isScrolling() {
+        return mScrolling;
     }
 
     @Override