Stop dispatching TYPE_VIEW_SELECTED a11y event on child views.
Bug: 263572235
Test: atest AccessibilityEventTest
Test: inspect A11yEvent log while expanding quick settings,
see fewer events
Change-Id: Ib286d336f00e131387de342a259bf761bfe2b76f
This commit is contained in:
@@ -25780,6 +25780,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
* @param selected true if the view must be selected, false otherwise
|
||||
*/
|
||||
public void setSelected(boolean selected) {
|
||||
setSelected(selected, true);
|
||||
}
|
||||
|
||||
void setSelected(boolean selected, boolean sendAccessibilityEvent) {
|
||||
//noinspection DoubleNegation
|
||||
if (((mPrivateFlags & PFLAG_SELECTED) != 0) != selected) {
|
||||
mPrivateFlags = (mPrivateFlags & ~PFLAG_SELECTED) | (selected ? PFLAG_SELECTED : 0);
|
||||
@@ -25787,11 +25791,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
invalidate(true);
|
||||
refreshDrawableState();
|
||||
dispatchSetSelected(selected);
|
||||
if (selected) {
|
||||
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
|
||||
} else {
|
||||
notifyViewAccessibilityStateChangedIfNeeded(
|
||||
AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
|
||||
if (sendAccessibilityEvent) {
|
||||
if (selected) {
|
||||
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
|
||||
} else {
|
||||
notifyViewAccessibilityStateChangedIfNeeded(
|
||||
AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4629,7 +4629,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
||||
final View[] children = mChildren;
|
||||
final int count = mChildrenCount;
|
||||
for (int i = 0; i < count; i++) {
|
||||
children[i].setSelected(selected);
|
||||
children[i].setSelected(selected, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user