fix: Fix loss of focus when un/redoing block deletions or moves. #9195
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.
The basics
The details
Resolves
Fixes RaspberryPiFoundation/blockly-keyboard-experimentation#220
Proposed Changes
This PR improves the handling of focus when undoing or redoing block deletes/adds and moves. In certain cases, focus could become lost, because setting the parent of a block shuffles its SVG's position in the DOM, and
appendChild()does not preserve focus state. Now, the focused element is saved and restored after DOM manipulation is complete. Additionally, I added a heuristic to infer the parent block to focus when a block is being deleted in cases where a block was programmatically detached from its parent prior to being deleted.