Merge "Stop dispatching TYPE_VIEW_SELECTED a11y event on child views."

This commit is contained in:
Daniel Norman
2023-01-17 19:48:26 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 6 deletions

View File

@@ -25824,6 +25824,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);
@@ -25831,11 +25835,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);
}
}
}
}

View File

@@ -4631,7 +4631,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);
}
}