From d593dcd5c36ad5d33ff5e1f7f1a44a61e2bbff94 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 18 Jan 2022 11:44:01 -0500 Subject: [PATCH] Fix a11y add in TileAdapter * Pass a final int position to scroll so it cannot be modified somewhere else. * Use requestAccessibilityFocus instead of requestFocus Test: manual Fixes: 208364651 Change-Id: Ic9192a2ed30fe7ae53aebea62d3c308579900a69 --- .../src/com/android/systemui/qs/customize/TileAdapter.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java index 9acd3eb4afc3f..d3bad167b660d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java @@ -414,9 +414,9 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { holder.mTileView.removeOnLayoutChangeListener(this); - holder.mTileView.requestFocus(); + holder.mTileView.requestAccessibilityFocus(); if (mAccessibilityAction == ACTION_NONE) { - holder.mTileView.clearFocus(); + holder.mTileView.clearAccessibilityFocus(); } } }); @@ -449,12 +449,13 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta // Update the tile divider position mTileDividerIndex++; mFocusIndex = mEditIndex - 1; + final int focus = mFocusIndex; mNeedsFocus = true; if (mRecyclerView != null) { mRecyclerView.post(() -> { final RecyclerView recyclerView = mRecyclerView; if (recyclerView != null) { - recyclerView.smoothScrollToPosition(mFocusIndex); + recyclerView.smoothScrollToPosition(focus); } }); }