Fix field editor focus loss in embedded browsers #11023
Open
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.
When MakeCode is embedded in assistive technology apps like Grid 3, page navigation within the AT app causes visibilitychange events that were triggering runSimulator() which calls beforeCompile(), closing any open field editors and causing users to lose their current state or in-progress edits.
For example, when you pull up a full QWERTY keyboard to type into a text field, you need to change the 'page' in Grid 3, which calls visibilitychange. Previously this resulted in losing your 'in-edit' status and makes navigation a lot harder. If you need a multi-page QWERTY keyboard (with larger targets and fewer letters per page) then it becomes almost impossible to type into the text field since you keep losing edit focus (and then accidentally triggering single character shortcuts!)
With this change, we use
background: truewhen resuming the simulator after a visibility change, which prevents the call to beforeCompile() and keeps our 'in-edit' state.This change fixes #11022.