summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2013-10-01 10:43:09 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-10-01 10:43:09 -0700
commitdaab4083470a11ac66d956aa1c79d02acf0f0a7d (patch)
tree01f8ba4b8fdad87b637e58e575f720b708cd9c71
parent59f1f5f7202ce50f0616b106adac726088dd6472 (diff)
parent05aaae3bc5541a3319b834929ca8eb41e300aa79 (diff)
am 05aaae3b: Fix crash when dragging a contact to searchbox
* commit '05aaae3bc5541a3319b834929ca8eb41e300aa79': Fix crash when dragging a contact to searchbox
-rw-r--r--src/com/android/dialer/list/PhoneFavoriteListView.java23
-rw-r--r--src/com/android/dialer/list/PhoneFavoriteTileView.java11
2 files changed, 16 insertions, 18 deletions
diff --git a/src/com/android/dialer/list/PhoneFavoriteListView.java b/src/com/android/dialer/list/PhoneFavoriteListView.java
index b685e8231..99979dd53 100644
--- a/src/com/android/dialer/list/PhoneFavoriteListView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteListView.java
@@ -80,8 +80,6 @@ public class PhoneFavoriteListView extends ListView implements SwipeHelperCallba
private int mDragShadowLeft;
private int mDragShadowTop;
- private int mDragShadowWidth;
- private int mDragShadowHeight;
private final float DRAG_SHADOW_ALPHA = 0.7f;
@@ -268,9 +266,8 @@ public class PhoneFavoriteListView extends ListView implements SwipeHelperCallba
ensureScrollHandler();
mScrollHandler.removeCallbacks(mDragScroller);
mIsDragScrollerRunning = false;
- // Either it's been a successful drop or it's ended with out drop.
- if (action == DragEvent.ACTION_DROP ||
- (action == DragEvent.ACTION_DRAG_ENDED && !event.getResult())) {
+ // Either a successful drop or it's ended with out drop.
+ if (action == DragEvent.ACTION_DROP || action == DragEvent.ACTION_DRAG_ENDED) {
handleDragFinished(eX, eY);
}
break;
@@ -346,9 +343,6 @@ public class PhoneFavoriteListView extends ListView implements SwipeHelperCallba
mDragShadowTop = tileView.getTop() + tileView.getParentRow().getTop();
}
- mDragShadowWidth = tileView.getWidth();
- mDragShadowHeight = tileView.getHeight();
-
mDragShadowOverlay.setImageBitmap(mDragShadowBitmap);
mDragShadowOverlay.setVisibility(VISIBLE);
mDragShadowOverlay.setAlpha(DRAG_SHADOW_ALPHA);
@@ -372,22 +366,21 @@ public class PhoneFavoriteListView extends ListView implements SwipeHelperCallba
}
private void handleDragHovered(int x, int y) {
- final View child = getViewAtPosition(x, y);
- if (!(child instanceof ContactTileRow)) {
- // Bail early.
- return;
- }
-
// Update the drag shadow location.
mDragShadowLeft = x - mTouchOffsetToChildLeft;
mDragShadowTop = y - mTouchOffsetToChildTop;
-
// Draw the drag shadow at its last known location if the drag shadow exists.
if (mDragShadowOverlay != null) {
mDragShadowOverlay.setX(mDragShadowLeft);
mDragShadowOverlay.setY(mDragShadowTop);
}
+ final View child = getViewAtPosition(x, y);
+ if (!(child instanceof ContactTileRow)) {
+ // Bail early.
+ return;
+ }
+
final ContactTileRow tile = (ContactTileRow) child;
final int itemIndex = tile.getItemIndex(x, y);
if (itemIndex != -1 && mOnDragDropListener != null) {
diff --git a/src/com/android/dialer/list/PhoneFavoriteTileView.java b/src/com/android/dialer/list/PhoneFavoriteTileView.java
index ac89fd693..371c8057c 100644
--- a/src/com/android/dialer/list/PhoneFavoriteTileView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteTileView.java
@@ -20,6 +20,7 @@ import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
+import android.content.ClipData;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
@@ -68,6 +69,10 @@ public abstract class PhoneFavoriteTileView extends ContactTileView {
/** Custom gesture detector.*/
protected GestureDetector mGestureDetector;
+ // Dummy clip data object that is attached to drag shadows so that text views
+ // don't crash with an NPE if the drag shadow is released in their bounds
+ private static final ClipData EMPTY_CLIP_DATA = ClipData.newPlainText("", "");
+
public PhoneFavoriteTileView(Context context, AttributeSet attrs) {
super(context, attrs);
mAnimationDuration = context.getResources().getInteger(R.integer.fade_duration);
@@ -99,15 +104,15 @@ public abstract class PhoneFavoriteTileView extends ContactTileView {
final PhoneFavoriteTileView view = (PhoneFavoriteTileView) v;
// NOTE The drag shadow is handled in the ListView.
if (view instanceof PhoneFavoriteRegularRowView) {
- final ContactTileRow parent = (ContactTileRow) view.getParentRow();
+ final ContactTileRow parent = view.getParentRow();
// If the view is regular row, start drag the row view.
// Drag is not available for the item exceeds the PIN_LIMIT.
if (parent.getRegularRowItemIndex() < PhoneFavoritesTileAdapter.PIN_LIMIT) {
- parent.startDrag(null, new View.DragShadowBuilder(), null, 0);
+ parent.startDrag(EMPTY_CLIP_DATA, new View.DragShadowBuilder(), null, 0);
}
} else {
// If the view is a tile view, start drag the tile.
- view.startDrag(null, new View.DragShadowBuilder(), null, 0);
+ view.startDrag(EMPTY_CLIP_DATA, new View.DragShadowBuilder(), null, 0);
}
return true;
}