From 6898584b743168a77d816f0a7938dcbd43c81291 Mon Sep 17 00:00:00 2001 From: Arthur Hung Date: Wed, 21 Sep 2022 03:31:04 +0000 Subject: [PATCH] Set VIEW_STATE_FOCUSED only if view and window has focus Set VIEW_STATE_FOCUSED state when view and window gain focus or it could draw a wrong highlight hint on non-focused window. Bug: 244273901 Test: atest DefaultFocusHighlightTest Test: multi-window, use dpad key to navigate focus Change-Id: Iabf58f41fe376d5921b679d53ec82c67650d4988 --- core/java/android/view/View.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 894ce63ca64e7..aed89726ad60f 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -24649,7 +24649,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, int viewStateIndex = 0; if ((privateFlags & PFLAG_PRESSED) != 0) viewStateIndex |= StateSet.VIEW_STATE_PRESSED; if ((mViewFlags & ENABLED_MASK) == ENABLED) viewStateIndex |= StateSet.VIEW_STATE_ENABLED; - if (isFocused()) viewStateIndex |= StateSet.VIEW_STATE_FOCUSED; + if (isFocused() && hasWindowFocus()) viewStateIndex |= StateSet.VIEW_STATE_FOCUSED; if ((privateFlags & PFLAG_SELECTED) != 0) viewStateIndex |= StateSet.VIEW_STATE_SELECTED; if (hasWindowFocus()) viewStateIndex |= StateSet.VIEW_STATE_WINDOW_FOCUSED; if ((privateFlags & PFLAG_ACTIVATED) != 0) viewStateIndex |= StateSet.VIEW_STATE_ACTIVATED;