Merge "Get the width from the parent rather than a resource." into jb-ub-mail
diff --git a/res/values-sw600dp-land/constants.xml b/res/values-sw600dp-land/constants.xml
index 1eb8d51..a1c207c 100644
--- a/res/values-sw600dp-land/constants.xml
+++ b/res/values-sw600dp-land/constants.xml
@@ -17,5 +17,4 @@
 <resources>
     <!-- Whether to show conversation subject in conversation view -->
     <bool name="show_conversation_subject">false</bool>
-    <dimen name="undo_animation_offset">720dp</dimen>
 </resources>
diff --git a/res/values/dimen.xml b/res/values/dimen.xml
index d211baf..a1b03ea 100644
--- a/res/values/dimen.xml
+++ b/res/values/dimen.xml
@@ -97,7 +97,6 @@
     <dimen name="photo_overlay_bottom_padding">6dp</dimen>
     <dimen name="attachment_tile_min_size">120dp</dimen>
     <dimen name="toast_bar_bottom_margin_in_conversation">24dip</dimen>
-    <dimen name="undo_animation_offset">360dp</dimen>
     <dimen name="wait_padding">16dp</dimen>
     <dimen name="senders_textview_top_padding">-4dp</dimen>
     <dimen name="senders_textview_height">30dp</dimen>
diff --git a/src/com/android/mail/browse/ConversationItemView.java b/src/com/android/mail/browse/ConversationItemView.java
index edbc3b2..caf9121 100644
--- a/src/com/android/mail/browse/ConversationItemView.java
+++ b/src/com/android/mail/browse/ConversationItemView.java
@@ -177,7 +177,6 @@
     private static ForegroundColorSpan sActivatedTextSpan;
     private static Bitmap sDateBackgroundAttachment;
     private static Bitmap sDateBackgroundNoAttachment;
-    private static int sUndoAnimationOffset;
     private static Bitmap MORE_FOLDERS;
 
     static {
@@ -374,7 +373,6 @@
             sStandardScaledDimen = res.getDimensionPixelSize(R.dimen.standard_scaled_dimen);
             sShrinkAnimationDuration = res.getInteger(R.integer.shrink_animation_duration);
             sSlideAnimationDuration = res.getInteger(R.integer.slide_animation_duration);
-            sUndoAnimationOffset = res.getDimensionPixelOffset(R.dimen.undo_animation_offset);
             // Initialize static color.
             sSendersSplitToken = res.getString(R.string.senders_split_token);
             sElidedPaddingToken = res.getString(R.string.elided_padding_token);
@@ -1238,7 +1236,7 @@
 
     @Override
     public void dismiss() {
-        SwipeableListView listView = this.getListView();
+        SwipeableListView listView = getListView();
         if (listView != null) {
             getListView().dismissChild(this);
         }
@@ -1403,8 +1401,11 @@
     }
 
     private ObjectAnimator createTranslateXAnimation(boolean show) {
-        final float start = show ? sUndoAnimationOffset : 0f;
-        final float end = show ? 0f : sUndoAnimationOffset;
+        SwipeableListView parent = getListView();
+        // If we can't get the parent...we have bigger problems.
+        int width = parent != null ? parent.getMeasuredWidth() : 0;
+        final float start = show ? width : 0f;
+        final float end = show ? 0f : width;
         ObjectAnimator slide = ObjectAnimator.ofFloat(this, "translationX", start, end);
         slide.setInterpolator(new DecelerateInterpolator(2.0f));
         slide.setDuration(sSlideAnimationDuration);
@@ -1519,6 +1520,9 @@
      * Begin drag mode. Keep the conversation selected (NOT toggle selection) and start drag.
      */
     private void beginDragMode() {
+        if (mLastTouchX < 0 || mLastTouchY < 0) {
+            return;
+        }
         selectConversation();
 
         // Clip data has form: [conversations_uri, conversationId1,