Merge "setVisibility should not propagate focus on children views" into ub-launcher3-master
diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java
index fe3df95..5d3ff53 100644
--- a/src/com/android/launcher3/LauncherStateManager.java
+++ b/src/com/android/launcher3/LauncherStateManager.java
@@ -420,8 +420,6 @@
         }
 
         UiFactory.onLauncherStateOrResumeChanged(mLauncher);
-
-        mLauncher.getDragLayer().requestFocus();
     }
 
     public void onWindowFocusChanged() {
diff --git a/src/com/android/launcher3/anim/AlphaUpdateListener.java b/src/com/android/launcher3/anim/AlphaUpdateListener.java
index a3d02d9..8ac9d66 100644
--- a/src/com/android/launcher3/anim/AlphaUpdateListener.java
+++ b/src/com/android/launcher3/anim/AlphaUpdateListener.java
@@ -20,6 +20,7 @@
 import android.animation.ValueAnimator;
 import android.animation.ValueAnimator.AnimatorUpdateListener;
 import android.view.View;
+import android.view.ViewGroup;
 
 /**
  * A convenience class to update a view's visibility state after an alpha animation.
@@ -55,7 +56,15 @@
             view.setVisibility(View.INVISIBLE);
         } else if (view.getAlpha() > ALPHA_CUTOFF_THRESHOLD
                 && view.getVisibility() != View.VISIBLE) {
-            view.setVisibility(View.VISIBLE);
+            if (view instanceof ViewGroup) {
+                ViewGroup viewGroup = ((ViewGroup) view);
+                int oldFocusability = viewGroup.getDescendantFocusability();
+                viewGroup.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
+                viewGroup.setVisibility(View.VISIBLE);
+                viewGroup.setDescendantFocusability(oldFocusability);
+            } else {
+                view.setVisibility(View.VISIBLE);
+            }
         }
     }
 }
\ No newline at end of file