Skip to content

Commit 8d83a31

Browse files
committedSep 20, 2023
[Predictive Back][Search] Fix issue where modal accessibility is not reset after collapsing search view predictively, which caused the screen to appear frozen when using TalkBack
PiperOrigin-RevId: 566750080
1 parent 93660d4 commit 8d83a31

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed
 

‎lib/java/com/google/android/material/search/SearchView.java

+16-6
Original file line numberDiff line numberDiff line change
@@ -790,10 +790,23 @@ public TransitionState getCurrentTransitionState() {
790790
}
791791

792792
void setTransitionState(@NonNull TransitionState state) {
793+
setTransitionState(state, /* updateModalForAccessibility= */ true);
794+
}
795+
796+
private void setTransitionState(
797+
@NonNull TransitionState state, boolean updateModalForAccessibility) {
793798
if (currentTransitionState.equals(state)) {
794799
return;
795800
}
796801

802+
if (updateModalForAccessibility) {
803+
if (state == TransitionState.SHOWN) {
804+
setModalForAccessibility(true);
805+
} else if (state == TransitionState.HIDDEN) {
806+
setModalForAccessibility(false);
807+
}
808+
}
809+
797810
TransitionState previousState = currentTransitionState;
798811
currentTransitionState = state;
799812
Set<TransitionListener> listeners = new LinkedHashSet<>(transitionListeners);
@@ -830,7 +843,6 @@ public void show() {
830843
return;
831844
}
832845
searchViewAnimationHelper.show();
833-
setModalForAccessibility(true);
834846
}
835847

836848
/**
@@ -845,18 +857,16 @@ public void hide() {
845857
return;
846858
}
847859
searchViewAnimationHelper.hide();
848-
setModalForAccessibility(false);
849860
}
850861

851862
/** Updates the visibility of the {@link SearchView} without an animation. */
852863
public void setVisible(boolean visible) {
853864
boolean wasVisible = rootView.getVisibility() == VISIBLE;
854865
rootView.setVisibility(visible ? VISIBLE : GONE);
855866
updateNavigationIconProgressIfNeeded();
856-
if (wasVisible != visible) {
857-
setModalForAccessibility(visible);
858-
}
859-
setTransitionState(visible ? TransitionState.SHOWN : TransitionState.HIDDEN);
867+
setTransitionState(
868+
visible ? TransitionState.SHOWN : TransitionState.HIDDEN,
869+
/* updateModalForAccessibility= */ wasVisible != visible);
860870
}
861871

862872
private void updateNavigationIconProgressIfNeeded() {

0 commit comments

Comments
 (0)
Please sign in to comment.