Fix input field horizontal scroll offset not clamping after text deletion#5708
Open
GautamKumarOffical wants to merge 1 commit into
Open
Conversation
…tion When text in an input field overflows the visible width, the viewport scrolls right to follow the cursor. After deleting characters with backspace, the scroll origin was not clamped back, leaving empty space on the right while earlier text remained hidden. Add GetContentWidth() to TextArea and clamp the horizontal scroll origin in RenderTextArea and the view resize path so the viewport never scrolls past the actual content width. Fixes jesseduffield#5633 Signed-off-by: Gautam Kumar <gautamkumarofficial@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 text in an input field overflows the visible width, the viewport scrolls right to follow the cursor. However, after deleting characters with backspace, the scroll origin was not clamped back to account for the now-shorter content. This left empty space on the right side of the input while earlier text remained hidden off-screen to the left.
Root cause:
updatedCursorAndOrigininview.godoesn't receive the total content width, so it cannot determine when the content has become shorter than the viewport. After backspace moves the cursor to a position less than the stale origin, the function setsnewOrigin = cursor, but this can place the viewport start past the actual content.Fix: Added
GetContentWidth()toTextAreaand clamped the horizontal scroll origin in bothRenderTextAreaand the view-resize path so the viewport never scrolls past the actual content width.To reproduce:
After fix: The viewport correctly resets to show all remaining content.
Fixes #5633