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
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index 73d3c36..2e18118 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -21,7 +21,6 @@
 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 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;