Ensure TextEdit cursor is never out of bounds #7077
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 rendering a TextArea we don't know if the saved cursor applies to the current galley since it's possible the app changed the TextBuffer (e.g. when submitting a chat input)
So we now detect if the galley changed from the last known one and clamp the cursor to ensure it's not out of bounds.
This fixes an issue where backspace and arrow keys can suddenly stop working. In this video I changed the
TextArea
to not lose focus when enter is pressed (using.return_key
). And instead, the app clears theString
. Which is what we do in our chat and REPL UIs.Repro:
I think this issue started happening when this function was removed in #5785
(cc @valadaptive in case you happen to know of a better fix that doesn't require keeping the Galley in the TextEdit state)