fix: Display.resize() handles buffer wider than visible window (#1210)#1633
Merged
fix: Display.resize() handles buffer wider than visible window (#1210)#1633
Conversation
3 tasks
…e window (#1210) On Windows, the terminal can have a screen buffer width larger than the visible window width (e.g., buffer=2000, window=80). The windows-vtp terminal type declares auto_right_margin, so Display expects auto-wrap at columns. But auto-wrap actually occurs at the buffer width, not the visible width. This causes Display's cursor tracking to desynchronize, resulting in only the first 1-2 lines being displayed. Display.resize() now queries terminal.getBufferSize() to detect when the buffer is wider than the requested columns. When this mismatch exists, wrapAtEol and delayedWrapAtEol are disabled since content will never reach the buffer's right edge within the visible area.
ef2db4a to
27d7445
Compare
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.
Summary
windows-vtpterminal declaresauto_right_margin, soDisplayexpects auto-wrap atcolumns, but wrap actually occurs at the buffer width — causing cursor tracking desync and broken display output.Display.resize()now queriesterminal.getBufferSize()and disableswrapAtEol/delayedWrapAtEolwhen the buffer is wider than the visible columns, since content will never reach the buffer's right edge.resize().Fixes #1210
Test plan
DisplayTestpassesterminalmodule test suite passes (135 tests)