Skip to content

Commit 3b99749

Browse files
paulfthomasraajkumars
authored andcommitted
[DropdownMenu][a11y] Fix incorrect state
PiperOrigin-RevId: 502659684
1 parent 4bd5e61 commit 3b99749

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

lib/java/com/google/android/material/textfield/DropdownMenuEndIconDelegate.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import androidx.annotation.NonNull;
4646
import androidx.annotation.Nullable;
4747
import androidx.core.view.ViewCompat;
48+
import androidx.core.view.accessibility.AccessibilityEventCompat;
4849
import androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener;
4950
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
5051
import com.google.android.material.animation.AnimationUtils;
@@ -230,13 +231,21 @@ public void onInitializeAccessibilityNodeInfo(
230231
}
231232
}
232233

234+
@SuppressLint("WrongConstant")
233235
@Override
234236
public void onPopulateAccessibilityEvent(View host, @NonNull AccessibilityEvent event) {
237+
if (!accessibilityManager.isEnabled() || isEditable(autoCompleteTextView)) {
238+
return;
239+
}
240+
// TODO(b/256138189): Find better workaround, back gesture should call
241+
// AutoCompleteTextView.OnDismissListener.
242+
boolean invalidState =
243+
event.getEventType() == AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED
244+
&& isEndIconChecked
245+
&& !autoCompleteTextView.isPopupShowing();
235246
// If dropdown is non editable, layout click is what triggers showing/hiding the popup
236247
// list. Otherwise, arrow icon alone is what triggers it.
237-
if (event.getEventType() == TYPE_VIEW_CLICKED
238-
&& accessibilityManager.isEnabled()
239-
&& !isEditable(autoCompleteTextView)) {
248+
if (event.getEventType() == TYPE_VIEW_CLICKED || invalidState) {
240249
showHideDropdown();
241250
updateDropdownPopupDirty();
242251
}

0 commit comments

Comments
 (0)