Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d593dcd5 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

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
parent 7c3f1a0c
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -414,9 +414,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
                public void onLayoutChange(View v, int left, int top, int right, int bottom,
                public void onLayoutChange(View v, int left, int top, int right, int bottom,
                        int oldLeft, int oldTop, int oldRight, int oldBottom) {
                        int oldLeft, int oldTop, int oldRight, int oldBottom) {
                    holder.mTileView.removeOnLayoutChangeListener(this);
                    holder.mTileView.removeOnLayoutChangeListener(this);
                    holder.mTileView.requestFocus();
                    holder.mTileView.requestAccessibilityFocus();
                    if (mAccessibilityAction == ACTION_NONE) {
                    if (mAccessibilityAction == ACTION_NONE) {
                        holder.mTileView.clearFocus();
                        holder.mTileView.clearAccessibilityFocus();
                    }
                    }
                }
                }
            });
            });
@@ -449,12 +449,13 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
        // Update the tile divider position
        // Update the tile divider position
        mTileDividerIndex++;
        mTileDividerIndex++;
        mFocusIndex = mEditIndex - 1;
        mFocusIndex = mEditIndex - 1;
        final int focus = mFocusIndex;
        mNeedsFocus = true;
        mNeedsFocus = true;
        if (mRecyclerView != null) {
        if (mRecyclerView != null) {
            mRecyclerView.post(() -> {
            mRecyclerView.post(() -> {
                final RecyclerView recyclerView = mRecyclerView;
                final RecyclerView recyclerView = mRecyclerView;
                if (recyclerView != null) {
                if (recyclerView != null) {
                    recyclerView.smoothScrollToPosition(mFocusIndex);
                    recyclerView.smoothScrollToPosition(focus);
                }
                }
            });
            });
        }
        }