diff options
| -rw-r--r-- | core/java/android/view/View.java | 3 | ||||
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 15 |
2 files changed, 16 insertions, 2 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 8fee4db458b3..cf087bcf7cfc 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -24490,8 +24490,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, /** * Set the current default focus highlight. * @param highlight the highlight drawable, or {@code null} if it's no longer needed. + * @hide */ - private void setDefaultFocusHighlight(Drawable highlight) { + void setDefaultFocusHighlight(Drawable highlight) { mDefaultFocusHighlight = highlight; mDefaultFocusHighlightSizeChanged = true; if (highlight != null) { diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 074cbe5a6947..89a1557db482 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -3815,6 +3815,13 @@ public final class ViewRootImpl implements ViewParent, if (mAttachInfo.mTooltipHost != null) { mAttachInfo.mTooltipHost.hideTooltip(); } + if (!hasWindowFocus) { + // Clear focus highlight if its window lost focus. + final View focused = mView.findFocus(); + if (focused != null) { + focused.setDefaultFocusHighlight(null); + } + } } // Note: must be done after the focus change callbacks, @@ -5846,7 +5853,13 @@ public final class ViewRootImpl implements ViewParent, // be when the window is first being added, and mFocused isn't // set yet. final View focused = mView.findFocus(); - if (focused != null && !focused.isFocusableInTouchMode()) { + if (focused == null) { + return false; + } + + // Clear default focus highlight if it entered touch mode. + focused.setDefaultFocusHighlight(null); + if (!focused.isFocusableInTouchMode()) { final ViewGroup ancestorToTakeFocus = findAncestorToTakeFocusInTouchMode(focused); if (ancestorToTakeFocus != null) { // there is an ancestor that wants focus after its |