summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/View.java3
-rw-r--r--core/java/android/view/ViewRootImpl.java15
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