Fix IllegalStateException in Dialer

Bug: 16862804
Change-Id: Ifa16032686547bb2df213c9155662d0e85b72d49
diff --git a/src/com/android/dialer/list/PhoneFavoriteListView.java b/src/com/android/dialer/list/PhoneFavoriteListView.java
index 4ecc1cd..2b45754 100644
--- a/src/com/android/dialer/list/PhoneFavoriteListView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteListView.java
@@ -317,4 +317,11 @@
 
         return (PhoneFavoriteSquareTileView) child;
     }
+
+    // Temporary workaround for b/16862804
+    @Override
+    public void onWindowFocusChanged(boolean hasWindowFocus) {
+        setAddStatesFromChildren(false);
+        super.onWindowFocusChanged(hasWindowFocus);
+    }
 }
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index 382e42e..600bd8b 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -35,7 +35,9 @@
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.LongSparseArray;
+import android.view.MotionEvent;
 import android.view.View;
+import android.view.View.OnTouchListener;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.FrameLayout;
@@ -129,6 +131,18 @@
         }
     };
 
+    // Temporary workaround for b/16862804
+    final OnTouchListener mOnTouchListener = new OnTouchListener() {
+        @Override
+        public boolean onTouch(View v, MotionEvent event) {
+            if (v.getParent() != null) {
+                ViewGroup parent = (ViewGroup) v.getParent();
+                parent.setAddStatesFromChildren(false);
+            }
+            return false;
+        }
+    };
+
     public interface OnDataSetChangedForAnimationListener {
         public void onDataSetChangedForAnimation(long... idsInPlace);
         public void cacheOffsetsForDatasetChange();
@@ -399,6 +413,8 @@
         tileView.setPhotoManager(mPhotoManager);
         tileView.setListener(mListener);
         tileView.loadFromContact(getItem(position));
+
+        tileView.setOnTouchListener(mOnTouchListener);
         return tileView;
     }