Remember button focus on details screen #2345
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
Reworked #2297 in way that does not cause regressions.
The previous implementation added a global focus listener that worked even if the buttons row was offscreen. The linked bug happened because a "last button" was stored when navigating to the movie screen and then when navigating to the person screen, that same button would request focus even if was offscreen. Detaching the listener when navigating between screens was not sufficient because it would always be called too late, ie. after the incorrect focus request happened. TIL global focus listener is very dangerous.
The rework involves a targeted focus listener for each button which does not operate while offscreen. The last focused button is only stored when navigating away from the buttons row, and only restored when coming back to that same row.
Issues
N/A