Merge "Fix startWrite for cases where multiple levels parent directory is missing." into mnc-ub-dev
diff --git a/v17/leanback/res/layout/lb_row_header.xml b/v17/leanback/res/layout/lb_row_header.xml
index 69fac46..67da907 100644
--- a/v17/leanback/res/layout/lb_row_header.xml
+++ b/v17/leanback/res/layout/lb_row_header.xml
@@ -18,6 +18,7 @@
 <android.support.v17.leanback.widget.RowHeaderView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/row_header"
+    android:importantForAccessibility="no"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     style="?rowHeaderStyle"
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionAdapterGroup.java b/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionAdapterGroup.java
index 9fafd33..858a0ed 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionAdapterGroup.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionAdapterGroup.java
@@ -127,6 +127,9 @@
         }
         InputMethodManager mgr = (InputMethodManager)
                 v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+        // Make the TextView focusable during editing, avoid the TextView gets accessibility focus
+        // before editing started. see also GuidedActionEditText where setFocusable(false).
+        v.setFocusable(true);
         v.requestFocus();
         mgr.showSoftInput(v, 0);
         if (!mImeOpened) {
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionEditText.java b/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionEditText.java
index 8e052fb..b2edfe9 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionEditText.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionEditText.java
@@ -14,10 +14,11 @@
 package android.support.v17.leanback.widget;
 
 import android.content.Context;
-import android.support.v17.leanback.widget.ImeKeyMonitor.ImeKeyListener;
+import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.widget.EditText;
 import android.view.KeyEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
 
 /**
  * A custom EditText that satisfies the IME key monitoring requirements of GuidedStepFragment.
@@ -55,4 +56,22 @@
         return result;
     }
 
+    @Override
+    public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+        super.onInitializeAccessibilityNodeInfo(info);
+        // Dont let the TextView gets accessibility focus if it's not focused.
+        if (!isFocused()) {
+            info.setVisibleToUser(false);
+        }
+    }
+
+    @Override
+    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
+        super.onFocusChanged(focused, direction, previouslyFocusedRect);
+        // Make the TextView focusable during editing, avoid the TextView gets accessibility focus
+        // before editing started. see also GuidedActionAdapterGroup where setFocusable(true).
+        if (!focused) {
+            setFocusable(false);
+        }
+    }
 }
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionsStylist.java b/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionsStylist.java
index aab4511..2a95dfe 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionsStylist.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/GuidedActionsStylist.java
@@ -517,7 +517,7 @@
         if (vh.mTitleView != null) {
             vh.mTitleView.setText(action.getTitle());
             vh.mTitleView.setAlpha(action.isEnabled() ? mEnabledTextAlpha : mDisabledTextAlpha);
-            vh.mTitleView.setFocusable(action.isEditable());
+            vh.mTitleView.setFocusable(false);
         }
         if (vh.mDescriptionView != null) {
             vh.mDescriptionView.setText(action.getDescription());
@@ -525,7 +525,7 @@
                     View.GONE : View.VISIBLE);
             vh.mDescriptionView.setAlpha(action.isEnabled() ? mEnabledDescriptionAlpha :
                 mDisabledDescriptionAlpha);
-            vh.mDescriptionView.setFocusable(action.isDescriptionEditable());
+            vh.mDescriptionView.setFocusable(false);
         }
         // Clients might want the check mark view to be gone entirely, in which case, ignore it.
         if (vh.mCheckmarkView != null) {