diff options
author | Hongwei Wang <hwwang@google.com> | 2013-09-17 22:12:25 -0700 |
---|---|---|
committer | Hongwei Wang <hwwang@google.com> | 2013-09-17 22:12:25 -0700 |
commit | 774206bc2d92d542a2a064e0a0b1718418d3044f (patch) | |
tree | b0e2e5e2c365ea85116d3cb4e22ff541a20a9682 | |
parent | e40ea13d87f3d409453bd22555d9aafcb8fa0639 (diff) |
Fixed the coordinates translation
Bug: 10686781
The coordinates translation bug when calllog is present
- Can not pick up the square tile
- Hard to drop into the square tile area
Change-Id: Ie8b51ad65428b9105b36abbc9b42ca212dbb1627
-rw-r--r-- | src/com/android/dialer/list/PhoneFavoritesTileAdapter.java | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java index 73d3c36ff..2e18118e1 100644 --- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java +++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java @@ -21,7 +21,6 @@ import android.content.ContentValues; import android.content.Context; import android.content.res.Resources; import android.database.Cursor; -import android.graphics.Rect; import android.net.Uri; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts; @@ -930,18 +929,21 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements */ public int getItemIndex(float itemX, float itemY) { if (mPosition < mMaxTiledRows) { - final Rect childRect = new Rect(); if (DEBUG) { Log.v(TAG, String.valueOf(itemX) + " " + String.valueOf(itemY)); } for (int i = 0; i < getChildCount(); ++i) { /** If the row contains multiple tiles, checks each tile to see if the point * is contained in the tile. */ - getChildAt(i).getHitRect(childRect); - if (DEBUG) { - Log.v(TAG, childRect.toString()); - } - if (childRect.contains((int)itemX, (int)itemY)) { + final View child = getChildAt(i); + /** The coordinates passed in are based on the ListView, + * translate for each child first */ + final int xInListView = child.getLeft() + getLeft(); + final int yInListView = child.getTop() + getTop(); + final int distanceX = (int) itemX - xInListView; + final int distanceY = (int) itemY - yInListView; + if ((distanceX > 0 && distanceX < child.getWidth()) && + (distanceY > 0 && distanceY < child.getHeight())) { /** If the point is contained in the rectangle, computes the index of the * item in the cached array. */ return i + (mPosition) * mColumnCount; |