Dismiss just the text from the leave behind instead of the whole item.

Leaves the BG there so the change isn't as "shocking"

Change-Id: I95b6929dadbf9b5e7c80931a3f65111fc4a695ff
diff --git a/res/layout/swipe_leavebehind.xml b/res/layout/swipe_leavebehind.xml
index 8461be3..97d42c9 100644
--- a/res/layout/swipe_leavebehind.xml
+++ b/res/layout/swipe_leavebehind.xml
@@ -19,49 +19,53 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@drawable/swiped_bg"
-    android:clickable="true"
-    android:gravity="center_vertical"
-    android:minHeight="@dimen/conversation_item_height"
-    android:orientation="horizontal" >
+    android:minHeight="@dimen/conversation_item_height" >
 
-    <TextView
-        android:id="@+id/undo_descriptionview"
-        android:layout_width="0dip"
+    <LinearLayout
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:ellipsize="end"
-        android:singleLine="true"
-        android:text="@string/no_conversations"
-        android:textColor="@android:color/white"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:layout_marginLeft="16dip" />
-
-    <View
-        android:id="@+id/undo_separator"
-        android:layout_width="1dip"
-        android:layout_height="match_parent"
-        android:layout_marginBottom="20dip"
-        android:layout_marginRight="12dip"
-        android:layout_marginTop="20dip"
-        android:background="@android:color/white" />
-
-    <ImageView
-        android:id="@+id/undo_icon"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_marginRight="8dip"
-        android:src="@drawable/ic_menu_revert_holo_dark" />
-
-    <TextView
-        android:id="@+id/undo_text"
-        style="@style/UndoTextStyle"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:paddingRight="16dip"
-        android:text="@string/undo"
-        android:textAllCaps="true"
         android:clickable="true"
         android:gravity="center_vertical"
-        android:textColor="@android:color/white" />
+        android:orientation="horizontal"
+        android:id="@+id/swipeable_content">
+        <TextView
+            android:id="@+id/undo_descriptionview"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:ellipsize="end"
+            android:singleLine="true"
+            android:text="@string/no_conversations"
+            android:textColor="@android:color/white"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:paddingLeft="16dip" />
 
+        <View
+            android:id="@+id/undo_separator"
+            android:layout_width="1dip"
+            android:layout_height="match_parent"
+            android:layout_marginBottom="20dip"
+            android:layout_marginRight="12dip"
+            android:layout_marginTop="20dip"
+            android:background="@android:color/white" />
+
+        <ImageView
+            android:id="@+id/undo_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_marginRight="8dip"
+            android:src="@drawable/ic_menu_revert_holo_dark" />
+
+        <TextView
+            android:id="@+id/undo_text"
+            style="@style/UndoTextStyle"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:paddingRight="16dip"
+            android:text="@string/undo"
+            android:textAllCaps="true"
+            android:clickable="true"
+            android:gravity="center_vertical"
+            android:textColor="@android:color/white" />
+    </LinearLayout>
 </com.android.mail.ui.LeaveBehindItem>
\ No newline at end of file
diff --git a/src/com/android/mail/browse/ConversationItemView.java b/src/com/android/mail/browse/ConversationItemView.java
index 0e85ef8..6800ca2 100644
--- a/src/com/android/mail/browse/ConversationItemView.java
+++ b/src/com/android/mail/browse/ConversationItemView.java
@@ -64,6 +64,7 @@
 import com.android.mail.ui.ConversationSelectionSet;
 import com.android.mail.ui.FolderDisplayer;
 import com.android.mail.ui.SwipeableItemView;
+import com.android.mail.ui.SwipeableListView;
 import com.android.mail.ui.ViewMode;
 import com.android.mail.utils.LogTag;
 import com.android.mail.utils.Utils;
@@ -1197,12 +1198,14 @@
         return x > mCoordinates.starX - sTouchSlop;
     }
 
-    /**
-     * Cancel any potential tap handling on this view.
-     */
     @Override
-    public void cancelTap() {
-        // Do nothing.
+    public boolean canChildBeDismissed() {
+        return true;
+    }
+
+    @Override
+    public void dismiss() {
+        getListView().dismissChild(this);
     }
 
     /**
@@ -1257,8 +1260,8 @@
         return handled;
     }
 
-    private ListView getListView() {
-        return ((SwipeableConversationItemView) getParent()).getListView();
+    private SwipeableListView getListView() {
+        return (SwipeableListView)((SwipeableConversationItemView) getParent()).getListView();
     }
 
     private boolean onTouchEventNoSwipe(MotionEvent event) {
@@ -1452,7 +1455,7 @@
     }
 
     @Override
-    public View getView() {
+    public View getSwipeableView() {
         return this;
     }
 }
diff --git a/src/com/android/mail/ui/LeaveBehindItem.java b/src/com/android/mail/ui/LeaveBehindItem.java
index 9ff11c2..b1b5976 100644
--- a/src/com/android/mail/ui/LeaveBehindItem.java
+++ b/src/com/android/mail/ui/LeaveBehindItem.java
@@ -27,6 +27,7 @@
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.animation.DecelerateInterpolator;
+import android.widget.FrameLayout;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -38,7 +39,7 @@
 import com.android.mail.providers.Folder;
 import com.google.common.collect.ImmutableList;
 
-public class LeaveBehindItem extends LinearLayout implements OnClickListener,
+public class LeaveBehindItem extends FrameLayout implements OnClickListener,
     SwipeableItemView {
 
     private ToastBarOperation mUndoOp;
@@ -46,6 +47,7 @@
     private AnimatedAdapter mAdapter;
     private ConversationCursor mConversationCursor;
     private TextView mText;
+    private View mSwipeableContent;
     private static int sShrinkAnimationDuration = -1;
     private static int sFadeInAnimationDuration = -1;
     private static int sSwipedBgColor = -1;
@@ -95,6 +97,7 @@
         mAdapter = adapter;
         mConversationCursor = (ConversationCursor) adapter.getCursor();
         setData(target);
+        mSwipeableContent = findViewById(R.id.swipeable_content);
         mText = ((TextView) findViewById(R.id.undo_descriptionview));
         mText.setText(Html.fromHtml(mUndoOp
                 .getSingularDescription(getContext(), folder)));
@@ -108,6 +111,7 @@
         }
     }
 
+    @Override
     public void dismiss() {
         if (mAdapter != null) {
             mAdapter.fadeOutLeaveBehindItems();
@@ -120,13 +124,13 @@
     }
 
     @Override
-    public View getView() {
-        return this;
+    public View getSwipeableView() {
+        return mSwipeableContent;
     }
 
     @Override
-    public void cancelTap() {
-        // Do nothing.
+    public boolean canChildBeDismissed() {
+        return true;
     }
 
     public LeaveBehindData getLeaveBehindData() {
diff --git a/src/com/android/mail/ui/SwipeHelper.java b/src/com/android/mail/ui/SwipeHelper.java
index 4e23f96..03b5811 100644
--- a/src/com/android/mail/ui/SwipeHelper.java
+++ b/src/com/android/mail/ui/SwipeHelper.java
@@ -207,7 +207,7 @@
                 }
                 mVelocityTracker.clear();
                 if (mCurrView != null) {
-                    mCurrAnimView = mCurrView.getView();
+                    mCurrAnimView = mCurrView.getSwipeableView();
                     mCanCurrViewBeDimissed = mCallback.canChildBeDismissed(mCurrView);
                     mVelocityTracker.addMovement(ev);
                     mInitialTouchPosX = ev.getX();
@@ -224,7 +224,6 @@
                         float deltaX = Math.abs(currX - mInitialTouchPosX);
                         if (deltaY > SCROLL_SLOP && deltaY > (FACTOR * deltaX)) {
                             mLastY = ev.getY();
-                            mCurrView.cancelTap();
                             return false;
                         }
                     }
@@ -232,11 +231,10 @@
                     float pos = ev.getX();
                     float delta = pos - mInitialTouchPosX;
                     if (Math.abs(delta) > mPagingTouchSlop) {
-                        mCallback.onBeginDrag(mCurrView.getView());
+                        mCallback.onBeginDrag(mCurrView.getSwipeableView());
                         mDragging = true;
                         mInitialTouchPosX = ev.getX() - mCurrAnimView.getTranslationX();
                         mInitialTouchPosY = ev.getY();
-                        mCurrView.cancelTap();
                     }
                 }
                 mLastY = ev.getY();
@@ -258,7 +256,7 @@
      *            move
      */
     private void dismissChild(final SwipeableItemView view, float velocity) {
-        final View animView = mCurrView.getView();
+        final View animView = mCurrView.getSwipeableView();
         final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
         float newPos = determinePos(animView, velocity);
         int duration = determineDuration(animView, newPos, velocity);
@@ -286,7 +284,7 @@
 
     private void dismissChildren(final Collection<ConversationItemView> views, float velocity,
             AnimatorListenerAdapter listener) {
-        final View animView = mCurrView.getView();
+        final View animView = mCurrView.getSwipeableView();
         final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(mCurrView);
         float newPos = determinePos(animView, velocity);
         int duration = DISMISS_ANIMATION_DURATION;
@@ -344,7 +342,7 @@
     }
 
     public void snapChild(final SwipeableItemView view, float velocity) {
-        final View animView = view.getView();
+        final View animView = view.getSwipeableView();
         final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
         ObjectAnimator anim = createTranslationAnimation(animView, 0);
         int duration = SNAP_ANIM_LEN;
@@ -381,11 +379,6 @@
         if (!mDragging) {
             return false;
         }
-        // If this item is being dragged, cancel any tap handlers/ events/
-        // actions for this item.
-        if (mCurrView != null) {
-            mCurrView.cancelTap();
-        }
         mVelocityTracker.addMovement(ev);
         final int action = ev.getAction();
         switch (action) {
@@ -423,7 +416,7 @@
                     if (FADE_OUT_DURING_SWIPE && mCanCurrViewBeDimissed) {
                         mCurrAnimView.setAlpha(getAlphaForOffset(mCurrAnimView));
                     }
-                    invalidateGlobalRegion(mCurrView.getView());
+                    invalidateGlobalRegion(mCurrView.getSwipeableView());
                 }
                 break;
             case MotionEvent.ACTION_UP:
diff --git a/src/com/android/mail/ui/SwipeableItemView.java b/src/com/android/mail/ui/SwipeableItemView.java
index f98f0c4..76d3f90 100644
--- a/src/com/android/mail/ui/SwipeableItemView.java
+++ b/src/com/android/mail/ui/SwipeableItemView.java
@@ -23,7 +23,9 @@
  * Represents an item that can be dismissed by the SwipeableListView.
  */
 public interface SwipeableItemView {
-    public View getView();
+    public View getSwipeableView();
 
-    public void cancelTap();
+    public boolean canChildBeDismissed();
+
+    public void dismiss();
 }
diff --git a/src/com/android/mail/ui/SwipeableListView.java b/src/com/android/mail/ui/SwipeableListView.java
index 55ade43..26aa0a1 100644
--- a/src/com/android/mail/ui/SwipeableListView.java
+++ b/src/com/android/mail/ui/SwipeableListView.java
@@ -150,20 +150,12 @@
 
     @Override
     public boolean canChildBeDismissed(SwipeableItemView v) {
-        View view = v.getView();
-        return view instanceof ConversationItemView || view instanceof LeaveBehindItem;
+        return v.canChildBeDismissed();
     }
 
     @Override
     public void onChildDismissed(SwipeableItemView v) {
-        View view = v!= null ? v.getView() : null;
-        if (view != null) {
-            if (view instanceof ConversationItemView) {
-                dismissChild((ConversationItemView) view);
-            } else if (view instanceof LeaveBehindItem) {
-                ((LeaveBehindItem) view).dismiss();
-            }
-        }
+        v.dismiss();
     }
 
     // Call this whenever a new action is taken; this forces a commit of any
@@ -175,7 +167,7 @@
         }
     }
 
-    private void dismissChild(final ConversationItemView target) {
+    public void dismissChild(final ConversationItemView target) {
         final Context context = getContext();
         final ToastBarOperation undoOp;